Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

составить формулу

Статус пользователя ssx
сообщение 2.12.2014, 15:25
Сообщение #1


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Здравствуйте!


Не могу решить проблему с формулой расчета.

как правильно написать вот такое ?
Код:
PlayerNum[killer] = (5 * ( (get_user_lvl(killer) * (status(killer) / 10) ) + (get_user_lvl(victim) * (status(victim) / 10) ) ) * (1 + Kills(killer) / 10 )


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя csnet
сообщение 2.12.2014, 15:28
Сообщение #2
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

внутри бред какой то , нельзя делить просто так целочисленные массивы

PlayerNum[killer] = (5 * ( (get_user_lvl(killer) * (status(killer) / 10) ) + (get_user_lvl(victim) * (status(victim) / 10) ) ) * (1 + Kills(killer) / 10 )


Отредактировал: csnet, - 2.12.2014, 15:30


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 2.12.2014, 15:33
Сообщение #3


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Я не знаю как правильно это реализовать при написании плагина .

Как можно реализовать грамотно этот расчет ?


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 2.12.2014, 15:36
Сообщение #4
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

нельзя делить просто так целочисленные массивы
чтобы яснее понимать свой код, раздели его на части

Код:



new Float:PlayerNum[33]

new Float:part1
new Float:part2


part1 = floatmul(get_user_lvl(killer), status(killer) / 10)
part2 = floatmul(get_user_lvl(victim), status(victim) / 10)


PlayerNum[killer] = (floatmul(5.0, part1 ) + (part2) * (1 + Kills(killer) / 10 ) )



теперь видно что формула кривая какая то изначально,
лучше напиши как именно нужно расчитать, чтобы было проще составить ее
дело в том что нельзя просто так множить и дробить целые значение не указав float( bla bla(level) )

Отредактировал: csnet, - 2.12.2014, 15:37


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 2.12.2014, 15:44
Сообщение #5


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

часть 1: get_user_lvl(killer) * status(killer)
часть 2: полученное значение с первой части делим на 10
часть 3: get_user_lvl(victim) * status(victim)
часть 4: полученное значение с третьей части делим на 10
часть 5: плюсуем значения с части 2 и 4

часть 6: 5 умножаем на полученное значение с части 5
часть 7: 1 + Kills(killer)
часть 8: полученное значение с части 8 делим на 10

часть 9: умножаем полученные суммы с части 6 на сумму с части 8

Отредактировал: ssx, - 2.12.2014, 15:45


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 2.12.2014, 15:58
Сообщение #6
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

Цитата(ssx @ 2.12.2014, 15:40) *
часть 1: get_user_lvl(killer) * status(killer)
часть 2: полученное значение с первой части делим на 10
часть 3: get_user_lvl(victim) * status(victim)
часть 4: полученное значение с третьей части делим на 10
часть 5: плюсуем значения с части 2 и 4

часть 6: 5 умножаем на полученное значение с части 5
часть 7: 1 + Kills(killer)
часть 8: полученное значение с части 8 делим на 10

часть 9: умножаем полученные суммы с части 6 на сумму с части 8



чтобы было понятней, ты должен lvl игрока сделать float, чтобы get_user_lvl(killer) возращало дробное число, но можно и сделать так float( тут чтото ) , хотя так не совсем мне удобно.

давай снова частями

Код:


new Float:part1
new Float:part2

part1 = floatdiv(floatmul(get_user_lvl(killer),status(killer)), 10.0)
part2 = floatdiv(floatmul(get_user_lvl(victim),status(victim)), 10.0)

плюсуем оба и множим на 5.0

floatmul(part1 + part2, 5.0) * floatdiv(1.0+kills(killer), 10.0) если я правильно понял последние 3 пункта



это все будет до лампочки если не делать дебага по каждому значению

server_print(" part 1 is %.2f " , part1 )
server_print(" part 1 is %.2f " , part2 )

server_print(" debug part1 %.2f" , floatmul(get_user_lvl(killer),status(killer)) )

Отредактировал: csnet, - 2.12.2014, 16:01


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 2.12.2014, 16:02
Сообщение #7


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

немножко в последнем ошибочку сделал:


часть 8: полученное значение с части 7 делим на 10

Отредактировал: ssx, - 2.12.2014, 16:02


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 2.12.2014, 16:03
Сообщение #8
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

оно так и стоит
floatdiv(1.0+kills(killer), 10.0)



Отредактировал: csnet, - 2.12.2014, 16:15


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 2.12.2014, 16:22
Сообщение #9
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

Код:
#include <amxmodx>

public plugin_init()
register_clcmd("say /1", "azaza")

public azaza() {
new PlayerNum[33] // Объявляем массив как integer
new killer

PlayerNum[killer] = (get_user_lvl(killer) * status(killer) + get_user_lvl(victim) * status(victim)) / 2 * ((1 + Kills(killer)) / 10 )
// Если все переменные указанные выше типа интеджер, то все работает
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя csnet
сообщение 2.12.2014, 17:12
Сообщение #10
Стаж: 12 лет

Сообщений: 4808
Благодарностей: 3849
Полезность: 690

формула неверна, там еще 5.0 * множить на все это


go v cs:go
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя proff_q
сообщение 2.12.2014, 19:57
Сообщение #11
Стаж: 14 лет

Сообщений: 357
Благодарностей: 263
Полезность: 804

csnet,
Формула верна, математика, 7 класс, группировка членов
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: