Нужна помощь по скрипту
#1

Итак зашел я както на серв какойто не помню и там на альт была менюшка клевая там все основные команды помощь и прочее в ней было, загорелся на свой сервер поставить, исходников никаких не нашел пришлось делать самому итак дано

Код:
    
public OnPlayerKeyStateChange
.......

else if(newkeys == KEY_WALK) //alt тут вызываем пип бой :) с функциями
    {
        ShowPlayerDialog(playerid,3000,DIALOG_STYLE_LIST,"Pip-Boy 3000","1. Ïîìîùü\r\n2. Âûçâàòü\r\n3. Âûçâàòü ñîáåñåäíèêà\r\n4. Îòïðàâèòü ÑÌÑ\r\n5. Îòêðûòü âîðîòà èñïîëüçóÿ BT","Äàëåå", "Âûõîä");
    }
/*    else if((newkeys & KEY_WALK) && (newkeys & KEY_CROUCH) && IsPlayerInAnyVehicle(playerid) == 1)
    {
        ShowPlayerDialog(playerid,3000,DIALOG_STYLE_LIST,"Pip-Boy 3000","1. Ïîìîùü\r\n2. Âûçâàòü\r\n 3. Âûçâàòü ñîáåñåäíèêà\r\n4. Îòïðàâèòü ÑÌÑ\r\n5. Îòêðûòü âîðîòà èñïîëüçóÿ BT","Äàëåå", "Âûõîä");
    }*/
дальше обработка этого пипбоя

Код:
	
                       if(dialogid == 3006) // pipboy3000 call xxxxx menu
		{
			if(response)
			{
			strmid(Typed[playerid], inputtext, 0, strlen(inputtext), 255);
			format(string, sizeof(string), "/call %d", inputtext);
                                  OnPlayerCommandText(playerid, string);
			}
			else // вызываем главное меню пипбоя :) (тут пока рыба)
			{
		           //	dialogid = 3000;
			}
		}
		if(dialogid == 3000) // pipboy3000 main menu
		{
			if(response)
			{
			switch (listitem)
				{
				case 0: //ïîìîùü /help. stats
					{
					}
				case 1: //âûçîâ òàêñè ìåíòîâ ìåäîâ ïîæàðíûõ òåõíèêîâ :) /call 333 ....
					{
					}
				case 2: // аналог /call XXXXX
					{
	               	ShowPlayerDialog(playerid, 3006, DIALOG_STYLE_INPUT,"Ïîçâîíèòü","Êîìó áóäåì çâîíèòü? \n Ââåäèòå íîìåð òåëåôîíà äëÿ çâîíêà","Ïîçâîíèòü","Íàçàä"); 
					}
				case 3: 
					{
					}
				case 4: 
					{
					}
				case 5: 
					{
					}
				}
			}
		}
какието проблемы с кодировкой русского языка ну ладно
итак чтобы было более понятно что я хочу сделать на альт нажимаеш вылазит менюшка потом нажимаеш на одну из строчек (в данном случае вызвать абонента) вылазит окошко с запросом номера
задумано это только с одной целью - постепенно расширяя функционал менюшки полностью отказаться от текстовых сообщений

и вот тут то у меня и проблема у меня есть /call XXXXX что я делаю, выдергиваю номер приклеиваю к нему /call и отправляю в OnPlayerCommandText(playerid, string)

Код:
strmid(Typed[playerid], inputtext, 0, strlen(inputtext), 255);
format(string, sizeof(string), "/call %d", inputtext);
OnPlayerCommandText(playerid, string)
ошибки нет впринципе и внутри игры все работает компилируется без ошибок но со следующим текстом

Код:
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase

Header size:          15844 bytes
Code size:          3233172 bytes
Data size:         15909744 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5187 cells (20748 bytes)
Total requirements:19175144 bytes
а без строчки OnPlayerCommandText(playerid, string) компилируется отлично, так вот вопрос можно ли как нибудь по другому передать данные, или сделать так как будто игрок написал /call XXXXX

зараниее спасибо
Reply
#2

Quote:
Originally Posted by StDIABLO
Посмотреть сообщение
Код:
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase

Header size:          15844 bytes
Code size:          3233172 bytes
Data size:         15909744 bytes
Stack/heap size:      16384 bytes; estimated max. usage=5187 cells (20748 bytes)
Total requirements:19175144 bytes
парень это значит что все отлично скомпилировалось
тут идёт подсчет в байтах... размера кода и т.д
не замарачивайся , данный текст означает одно - ты все верно сделал это тоже самое что и
Код:
Pawn compiler 3.2.3664              Copyright © 1997-2006, ITB CompuPhase
Reply
#3

Quote:
Originally Posted by [CripZ]SERCH
Посмотреть сообщение
данный текст означает одно - ты все верно сделал это тоже самое что и
Код:
Pawn compiler 3.2.3664              Copyright © 1997-2006, ITB CompuPhase
Неправда, если выдает отчет по байтам, то скрипт слишком много жрет памяти... Т.е. выдача отчетов это плохо.
Reply
#4

не я конечно понимаю что скрипт не маленький (уже переваливает за 80000 строк) (оптимизацией после армии займусь если руки дойдут ) но без этой --->OnPlayerCommandText(playerid, string); команды никаких отчетов не вываливает, вот я и думаю то что у меня тут чтото не так и хочу эту строчку на чтонибудь заменить
Reply
#5

если жрёт много памяти! оптимизация рулит? .. если 6.5к+ строк ... тут ни какая оптимизация не поможет (кроме как "обширная")
Reply
#6

ну не всеж 80000 строк мной написаны почти все что я пишу - более менее оптимизировано, и потихоньку паблик за пабликом оптимизировать код
Reply
#7

Интересно, а где можно почитать об этих сообщениях выдаваемые компилятором и как сильно они влияют на работу сервера? (Перегрузки и т.д.)
Reply
#8

Quote:
Originally Posted by [CripZ]SERCH
Посмотреть сообщение
если жрёт много памяти! оптимизация рулит? .. если 6.5к+ строк ... тут ни какая оптимизация не поможет (кроме как "обширная")
Обычно такие варны вылетают, когда есть массивы или переменные а-ля:
Код:
new a[256][1024];
Reply
#9

да тыщи таких переменных и массивов эти отчеты означают лишь то, что я выхожу за пределы стека

повторю вопрос, можно ли как нибудь лучше сделать, чем я написал
(напомню задачу при нажании на итемлист например "помощь" сервер вместо юзера пишет /help, при нажании call юзер лиш указывает номер,а сервер сам выполняет команду аналогичную /call XXXXX, учитывая что обработка всех команд сделана более менее оптимизировано и правильно, я хочу передавать управление именно туда)
Reply
#10

Quote:
Originally Posted by Makar93
Посмотреть сообщение
Обычно такие варны вылетают, когда есть массивы или переменные а-ля:
Код:
new a[256][1024];
У меня при создании простой переменной с размером 512 уже выдавали такой результат.
Код:
new var[ 512 ];
Тут скорее идёт общий подсчёт глобальных переменных (которые и жрут много памяти).

Quote:
Originally Posted by StDIABLO
Посмотреть сообщение
да тыщи таких переменных и массивов эти отчеты означают лишь то, что я выхожу за пределы стека

повторю вопрос, можно ли как нибудь лучше сделать, чем я написал
(напомню задачу при нажании на итемлист например "помощь" сервер вместо юзера пишет /help, при нажании call юзер лиш указывает номер,а сервер сам выполняет команду аналогичную /call XXXXX, учитывая что обработка всех команд сделана более менее оптимизировано и правильно, я хочу передавать управление именно туда)
Так в первом сообщении сказано, что всё работает, но со следующими "ошибками"...
Не получается вызвать калбэк в ручную?
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)