Пятница, 19 Апреля 2024, 19:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Ошибка - Error in code at line... (Не понимаю в что не так.)
Ошибка - Error in code at line...
Quad69Дата: Воскресенье, 02 Марта 2014, 12:35 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
Всем привет!
Сейчас расширял карту, и когда я тестировал игру у меня появилась такая ошибка:
Код
ERROR in
action number 1
of Alarm Event for alarm 2
for object objPlayer:

Error in code at line 21:
       
              if variable_local_exists(objall.index) {writeushort(objall.index);} else {writeushort(0)}
                     ^
at position 46: Unknown variable index


У меня во всех объектах есть переменная index
всё идёт нормально, но после расширения карты у меня на её половине проверки(где-то в координатах 800-800 из 2400-2400) выдаёт ошибку и перестаёт проверять карту

Добавлено (02.03.2014, 12:35)
---------------------------------------------
И ещё вопрос:
Как сделать рисование текста из файла который в интернете?


Сообщение отредактировал maksim1221232 - Воскресенье, 02 Марта 2014, 12:35
URGINSANДата: Воскресенье, 02 Марта 2014, 12:53 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
maksim1221232, поставь в настройках галочку, чтобы все неизвестные переменные были равны нулю. Думаю поможет

Я на драйве
Quad69Дата: Понедельник, 03 Марта 2014, 15:05 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
URGINSAN, Спасибо! Помогло!

Добавлено (03.03.2014, 15:05)
---------------------------------------------

Цитата maksim1221232 ()
И ещё вопрос:
Как сделать рисование текста из файла который в интернете?

Кто нибуть может помочь решить эту проблему?
URGINSANДата: Понедельник, 03 Марта 2014, 16:46 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Цитата maksim1221232 ()
Как сделать рисование текста из файла который в интернете?

я думаю нужно искать сопутствующую dll'ку для этого. Либо на офф сайте спроси, там думаю знают.


Я на драйве
Quad69Дата: Понедельник, 03 Марта 2014, 20:40 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Я где-то видел похожее: Как добавить спрайт который находится в интернете?
И в ответ написали такой просто код: sprite_add(http://lalalla.png)
Можно также вытащить текст?

Добавлено (03.03.2014, 20:40)
---------------------------------------------
Ещё одна проблема:
У меня есть список в котором хранятся ники игроков, сколько он умер и убил других игроков, есть он у сервера и у клиента.
Сервер должен отправить весь список клиенту.
Вот сам код:

Код
var ii;
ii=0
while ii<8
{
if server.pn[ii]='' {server.pn[ii]=nick;server.pd[ii]=deads;server.pk[ii]=kills;list=ii;break;};
if ii<7 {ii+=1} else {break;}
}
//Предыдущий кусочек кода помещает ник игрока в список
with objPlayer
{
clearbuffer();
writebyte(alldata);
writeushort(16);
writebyte(list)
writestring(vargroup,true);
writestring(server.pn[0],true)
writestring(server.pn[1],true)
writestring(server.pn[2],true)
writestring(server.pn[3],true)
writestring(server.pn[4],true)
writestring(server.pn[5],true)
writestring(server.pn[6],true)
writestring(server.pn[7],true)
writebyte(server.pd[0])
writebyte(server.pd[1])
writebyte(server.pd[2])
writebyte(server.pd[3])
writebyte(server.pd[4])
writebyte(server.pd[5])
writebyte(server.pd[6])
writebyte(server.pd[7])
writebyte(server.pk[0])
writebyte(server.pk[1])
writebyte(server.pk[2])
writebyte(server.pk[3])
writebyte(server.pk[4])
writebyte(server.pk[5])
writebyte(server.pk[6])
writebyte(server.pk[7])
with(objPlayer){if(id = other.id){sendmessage(socketid); }}
}

Вот принятие:
Код
if bytes = 16
        {
        var grp,ds,kl;
        obj_player.list=readbyte()
        write_message('Группа: '+string(readstring()))
        //
         playerl[0]=readstring()
         playerl[1]=readstring()
         playerl[2]=readstring()
         playerl[3]=readstring()
         playerl[4]=readstring()
         playerl[5]=readstring()
         playerl[6]=readstring()
         playerl[7]=readstring()
         //
         playerd[0]=readbyte()
         playerd[1]=readbyte()
         playerd[2]=readbyte()
         playerd[3]=readbyte()
         playerd[4]=readbyte()
         playerd[5]=readbyte()
         playerd[6]=readbyte()
         playerd[7]=readbyte()
         //
         playerk[0]=readbyte()
         playerk[1]=readbyte()
         playerk[2]=readbyte()
         playerk[3]=readbyte()
         playerk[4]=readbyte()
         playerk[5]=readbyte()
         playerk[6]=readbyte()
         playerk[7]=readbyte()
        }


С никами всё в порядке, но количество смертей игрока и количество игроков которых он убил смещаются на низ когда подключается новый игрок.
Например зашёл игрок kot555 и у него счёт 5-7, зашёл второй, у него 5-7 а у kot555 0 и 0
Помогите исправить
XDominatorДата: Вторник, 04 Марта 2014, 09:55 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Воспользуйся циклами вместо такого огорода, и проблема скорее всего исчезнет сама собой smile

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
Quad69Дата: Вторник, 04 Марта 2014, 14:00 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
А разве есть в этом разница? Что цикл, что так ничего не изменят.
XDominatorДата: Вторник, 04 Марта 2014, 14:51 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Пока будешь делать цикл, переосмыслишь весь свой кусок кода, и скорее всего найдешь косяк. Как минимум из замечаний - очень много бесполезных массмвов. Почему ты не можешь хранить все данные об игроке в отдельном объекте, или, еще лучше - в самом объекте игрока на сервере? А если тебе нужно будет добавить еще что то?

Код

obj_player
obj_playerinfo  - наши объекты связанные с игроком



При инициализации игрока(его создание видимо, в каком то объекте, пусть условно это будет obj.ctrl

Код

//Инициализация самого ctrl
maxplayers = 10 - максимум игроков
actual_player = 0 - максимальный ид для оптимизации цикла
i = 0
while i<maxplayers - инициализируем массив игроков и информаций
{
players[i] = -1 - наше "общепринятое" пустое значение
players_info[i] = -1
i += 1;
}
//Конец инициализации ctrl

newobj = instance_create(obj_player, 0, 0)
newobj_info = instance_create(obj_playerinfo , 0, 0)

newobj_info.player = newobj - ссылка на прямой доступ ко всем данным игрока-родителя

index = -1;
index = find_free_id() - скрипт, который будет находить первый свободный индекс в массиве players[]. Не возвращает если все занято

if index >= 0
{
players[index] = newobj;
players_info[index] = newobj_info;
newobj.array_index = index;
}

Вот по примерно такой схеме я строил у себя данные. При этом я даже не примешивал дополнительные объекты, а харнил вообще всю инфу тупо в объектах игроках. Но если у тебя расширенная статистика, которую ты можешь обрабатывать даже для вылетевших\дисконнектнутых игроков - тогда пользуй это.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)


Сообщение отредактировал XDominator - Вторник, 04 Марта 2014, 14:51
Quad69Дата: Вторник, 04 Марта 2014, 18:06 | Сообщение # 9
заслуженный участник
Сейчас нет на сайте
Теперь вообще ничего не работает, открываю список, а там везде(там где даже должен быть ник игрока) стоят 0
Я вообще не понимаю где эти ошибки, у меня всё должно быть верно.
Вот коды:
Server:
obj_Player. [alarm 3](Отправка и добавление)


Client:
objControl. [Step](Принятие)


pl_list. [Create](Создание списка)


Chat.[Draw](Рисование списка)

Добавлено (04.03.2014, 18:06)
---------------------------------------------
Кто нибуть поможет?!

Сообщение отредактировал maksim1221232 - Вторник, 04 Марта 2014, 16:01
XDominatorДата: Среда, 05 Марта 2014, 09:24 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
with(objPlayer){if(id = other.id){sendmessage(socketid); }}
with(objPlayer){if(id != other.id){sendmessage(socketid); }}

А вот эта конструкция вообще что делает? О_о Судя по всему, она отправляет сообщения всем игрокам, т.е. она эквивалентна записи
Код

with(objPlayer)
{sendmessage(socketid); }


Также не вполне понятны структуры твоих пакетов и массивов, если честно. Ошибка вполне может быть в оболочке, пользуйся show_message и ищи на каком этапе теряются твои данные: формирование на клиенте, отправка на сервер, прием на сервере, обработка на сервере, отправка на клиенты, прием на клиентах. 6 глобальных ивентов через которые проходят твои ники и все остальное.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
Quad69Дата: Среда, 05 Марта 2014, 15:24 | Сообщение # 11
заслуженный участник
Сейчас нет на сайте
Проблема уже исправлена вчера.
Я просто изменил отправку, вот:
writestring(server.pn[0],true)
writebyte(pd[0])
writebyte(pk[0])
И т.д

Приходить стало всё нормально, только не понимаю как отличается этот код от того?

Добавлено (05.03.2014, 15:24)
---------------------------------------------

Цитата XDominator ()

with(objPlayer)
{sendmessage(socketid); }

Делал так, но вообще ничего не отправлялось
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Ошибка - Error in code at line... (Не понимаю в что не так.)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг