Онлайн всего: 1 Гостей: 1 Пользователей: 0 |
|
02.11.2014, 23:37 | |
Читайте предыдущую часть статьи по ссылке: Разбор скрипта "NPC боксёр в SAMP" (Часть 6) switch(random(3)) выбираем из трех вариантов, либо NPC нажмет правую кнопку, а затем левую, попробуйте сделать так сами, когда противоположный игрок находится вблизи от вас, что выполнит комбо 1, либо ох, вообщем запутаешься в этих кнопках, дело в том, что все их переназначают обычно, мало у кого на пробел спринт, а на шифт прыжок. Поэтому вот, что я Вам скажу, потестите на Вашем друге какие кнопки Вы нажимаете, затем гляньте, если пробел это уже прыжок, а не бег, как в оригинале, то она будет KEY_JUMP, иначе KEY_JUMP будет шифт, думаю разберетесь, здесь правда ничего сложного, а домашнее задание всем сделать 3е комбо, в кунг-фу, например, это удар с ноги в прыжке. Итак, что у нас получилось на данные момент – 2 комба и блок, всё используется случайно каждые 250 секунд, то ударим, то заблокируем, не предугадать ведь в схватке) if(dist> 0.8 && dist<15.0 && GetPVarInt(pid, "box")== 1) { SetPVarInt(npc[npcid][npc_ID], "Condition",0); } Если игрок далее чем в 0.8 метров от нас, но не далее 15, то ставим состояние 0, и теперь выполняется оно. if(dist>26.0) { for (new i = 0; i < 499; i++) { if(GetPVarInt(i, "box")== 1){ DeletePVar(i,"box");}} KillTimer(boxertimer); FCNPC_Destroy(npc[npcid][npc_ID]); ringused=0; SetTimer("Renewbox",15000,0); } если же дистанция между игроком, вызвавшим на бой NPC и NPC более 26 метров, удаляем NPC, можете и бан сразу вписать, ибо ринг, в который портает, из него вообщем нереально выбраться, только с читами, ну может кто-то баги знает, лично я нет, а так если вдруг так получилось, ну вдруг админ портнул Вас далеко, то удаляем NPC и обновляем пикап, что из-за одного другим-то мучиться? public OnPlayerCommandText(playerid, cmdtext[]) { if(!strcmp(cmdtext, "/bc", true)) { SetPlayerInterior(playerid, 5); SetPlayerPos(playerid,767.5128,6.9371,1000.7142); SetPlayerFacingAngle(playerid,90.9281); } return 0; } Пишем команду /bc и нас портает в спортзал. Проблемы скрипта Итак, здесь мы обсудим, чем же неидеален наш скрипт, ничто не идеально, наверное, но тем не менее. Про дистанцию, я подбирал такую дистанцию, когда NPC ещё не врезается в игрока, ведь если тупо писать goto в игрока, то он будет бежать и бежать в игрока, расстояние 0.8 по практическим исследования показалось оптимальным, дело в том, что если мы будет стоять далеко от нашего соперника и жать кнопки, то мы его даже в фокус не возьмем, данном расстояние позволяет брать игрока в фокус, можно же было бы как-то получать угол, или, для продвинутых кватернион, ну точнее изменять кватернион NPC, чтобы он плавно поворачивался к игроку и дрался с ним, но я не знаю как это делается, кватернионы – это типа повороты в пространстве, но плавные, а не сразу с 45, например, градусов перескачить в 180. Идея типа получать зеркальный угол от игрока – бред, если игрок стоит не лоб в лоб, то NPC будет бить по воздуху, вообщем работает очень не круто, если у кого-то есть способы оптимизации скрипта, значительной оптимизации, пишите в комментариях. Вернуться в начало статьи: Разбор скрипта "NPC боксёр в SAMP" (Часть 1)
| |
Добавил: AXE |
| Теги: | |
Просмотров: 3394 | Рейтинг: 1.0/1 |