7.Host 3 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 Předem upozorňuju že to neni můj tut ,ale přeložil jsem to ze samp fóra. Přidal jsem poznámky apod. V tomto tutoriálu si ukážeme jak na konverzaci s NPC ve hře Nejprve přidáme nahoru do modu forward: forward GetClosestPlayer(p1); Nynní si přidáme někam mezi publici nebo na konec modu: public GetClosestPlayer(p1) { new x,Float:dis,Float:dis2,person; person = -1; dis = 99999.99; for (x=0;x { if(IsPlayerConnected(x)) //pokud je hráč připojený { if(x != p1) { dis2 = GetDistanceBetweenPlayers(x,p1); if(dis2 < dis && dis2 != -1.00) { dis = dis2; person = x; } } } } return person; } To umožní aby funkci mohl používat nejbližší hráč Ok, nynní přejdeme k funkci OnPlayerText Do public OnPlayerText si vložíme: new bot = GetClosestPlayer(playerid); //vytvoříme nového bota a new name[24]; GetPlayerName(bot, bot, 24); //jméno bota Nynní jsme si nastavili jméno bota ,ale script stále ještě neví že je to bot takže ještě si dáme: if(IsPlayerNPC(bot)) //pokud neni hráč ale NPC Tím jsme si nastavili podmínku že musí být bot takže následující funkce bude fungovat jen s boty Ted si nastavíme že když hráč napíše ahoj bot odpoví: if(!strcmp(text,"ahoj",true)) //když hráč napíše ahoj Pokud hráč napíše "ahoj" bez uvozovek tak bot odpoví: POZNÁMKA: stále vkládáme do OnPlayerText { format(to_others,přesný počet znaků,"%s: Ahoj, jak se máš?",name); // %s = jméno bota teré jste si nastavili SetPlayerChatBubble(bot,to_others,vaše barva,35.0,10000); //v chatu se zobrazí bublina Takže, bot odpoví Ahoj, jak se máš a v chatu se zobrazí bublina. Jistě jste si všichni všimli že tato funkce je nová Počet znaků úvádějte přesně určuje totiž velikost bubliny Nakonec by script mohl vypadat nějak takto: public OnPlayerText(playerid, text[]) { new bot = GetClosestPlayer(playerid); //vytvoříme nového bota new name[24]; GetPlayerName(bot, botnik, 24); //jméno bota if(IsPlayerNPC(bot)) //pokud neni hráč ale NPC { if(!strcmp(text,"Ahoj botniku",true)) { format(to_others,27,"%s: Ahoj, nezajdem na pivo?",name); SetPlayerChatBubble(bot,to_others,COLOR_GREEN,35.0,10000); } return 1; } Chcete aby váš bot odpovídal na víc otázek?(by 7Hot) public OnPlayerText(playerid, text[]) { new bot = GetClosestPlayer(playerid); //vytvoříme nového bota new name[24]; GetPlayerName(bot, botnik, 24); //jméno bota if(IsPlayerNPC(bot)) //pokud neni hráč ale NPC { if(!strcmp(text,"Ahoj botniku",true)) //zpráva kterou musí hráč napsat { format(to_others,27,"%s: Ahoj, nezajdem na pivo?",name); //NPC odpoví... SetPlayerChatBubble(bot,to_others,COLOR_GREEN,35.0,10000); //barva a pozice bubliny } if(!strcmp(text,"botniku kde najdu prikazy?",true)) { format(to_others,16,"%s: /commands :)",name); SetPlayerChatBubble(bot,to_others,COLOR_GREEN,35.0,10000); } if(!strcmp(text,"botniku das mi hp?",true)) { format(to_others,18,"%s: ani náhodou :D",name); SetPlayerChatBubble(bot,to_others,COLOR_GREEN,35.0,10000); } return 1; } Jak udělat aby každý NPC odpovídal náhodně? Ok, určitě nechcete aby vaše NPC odpovídali stále na jednu věc ne? Takže využijeme randomu Do public OnPlayerText si vložte: new RandR = random(4) //vytvoří nový random pokud nastavíte random(4) znamená to že bot může odpovídat 3 různé věci Mělo by to vypadat nějak takto: public OnPlayerText(playerid, text[]) { new bot = GetClosestPlayer(playerid); new name[24]; new RandR = random(4); //vytvoříme si random GetPlayerName(botnik, name, 24); //jméno bota if(IsPlayerNPC(bot)) //pokud neni hráč ale NPC { if(!strcmp(text,"ahoj, jsi chytry bot?",true)) { if(RandR == 1) { format(to_others, 39,"%s: Ahoj, nejsem chytrý bot. Bohužel :(",name); SetPlayerChatBubble(bot,to_others,COLOR_RED,35.0,10000); } else if(RandR == 2) //a tak dále... return 1; } Doufám že se vám můj TUT líbil. Prosím nechte si kecy typu "tohle dokáže každá lama" apod. Docela jsem předělal tut ze samp fora a přidal hodně poznámek. Odkaz: http://forum.sa-mp.com/index.php?topic=120953.0 Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 tak a od dnes zacinam aj s pawn v 0.3 :thumbup: Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 nechce mi to ist vzdy mi to hodi chyby Link to comment Share on other sites More sharing options...
Guest Redgunn Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 tak aspon napis ty chyby Link to comment Share on other sites More sharing options...
7.Host 3 Odesláno: 9. Září, 2009 Author Share Odesláno: 9. Září, 2009 nikomu se muj tut nelíbí? Link to comment Share on other sites More sharing options...
Sovak 0 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 naco su vam taketo kktiny jak boti nepochopim Link to comment Share on other sites More sharing options...
7.Host 3 Odesláno: 9. Září, 2009 Author Share Odesláno: 9. Září, 2009 kokotiny možná tak pro tebe Link to comment Share on other sites More sharing options...
癌癌癌 1 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 Je to dobrý, vysvětlený .. ale nevim jednu věc: proč nedělate vlastni tuty misto překladani ze samp forka? :? Link to comment Share on other sites More sharing options...
7.Host 3 Odesláno: 9. Září, 2009 Author Share Odesláno: 9. Září, 2009 Tak jak už jsem myslim někde napsal přidělal jsem tam nějaký cody a popsal no Ještě jsem se tyhle funkce nenaučil :? Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 neviete pojde registracka z 0.2X na 0.3 ? A preco mi ukazuje ze v SLOZKE INCLUDE nemam includ DUDB a pritom mam a vzdy mi to hadze :x Link to comment Share on other sites More sharing options...
AvestX 5 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 Mělo by ti to jít já skoušel na SA-MP 0.3 Zivot Vesnicana 2 a šel... Link to comment Share on other sites More sharing options...
FreeWall 3 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 neviete pojde registracka z 0.2X na 0.3 ? A preco mi ukazuje ze v SLOZKE INCLUDE nemam includ DUDB a pritom mam a vzdy mi to hadze :x zřejmě ještě používáš starý pawno program ( na 0.2x ) › spusť nový ze složky pawno se serverem 0.3 a pak už můžeš spouštět ostatní své soubory normálně - mě to tak funguje Link to comment Share on other sites More sharing options...
癌癌癌 1 Odesláno: 9. Září, 2009 Share Odesláno: 9. Září, 2009 FreeWall":108khexo]neviete pojde registracka z 0.2X na 0.3 ? A preco mi ukazuje ze v SLOZKE INCLUDE nemam includ DUDB a pritom mam a vzdy mi to hadze :x zřejmě ještě používáš starý pawno program ( na 0.2x ) › spusť nový ze složky pawno se serverem 0.3 a pak už můžeš spouštět ostatní své soubory normálně - mě to tak funguje Nj + do složky include přidat dudb pokud tam ještě neni ... Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 13. Září, 2009 Share Odesláno: 13. Září, 2009 Pise mi 26 errorov A mam to tam presne tak ako to je uvedene ako ma vyzerat script presne tak to mam Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 13. Září, 2009 Share Odesláno: 13. Září, 2009 pls help Link to comment Share on other sites More sharing options...
7.Host 3 Odesláno: 13. Září, 2009 Author Share Odesláno: 13. Září, 2009 nemáš includy na 0.3 Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 13. Září, 2009 Share Odesláno: 13. Září, 2009 pls hod mi ich sem nemozem ich najst Link to comment Share on other sites More sharing options...
癌癌癌 1 Odesláno: 13. Září, 2009 Share Odesláno: 13. Září, 2009 pls hod mi ich sem nemozem ich najst Stahni si SAMP SERVER 0.3 RC4-4 a použij pawno z toho Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 13. Září, 2009 Share Odesláno: 13. Září, 2009 este mi povedz kde lebo vsetko co stiahnem tak tam nie su includy Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 13. Září, 2009 Share Odesláno: 13. Září, 2009 pls help co s tym Link to comment Share on other sites More sharing options...
Sovak 0 Odesláno: 19. Září, 2009 Share Odesláno: 19. Září, 2009 http://gtanet.info/newsy/aktualizacja-klienta-sa-mp-0-3-rc5-2/ mas aj client a server s pawnom 0.3 tam su totalne upravene includy aj stare Link to comment Share on other sites More sharing options...
Sovak 0 Odesláno: 1. Listopad, 2009 Share Odesláno: 1. Listopad, 2009 sry za stari post ale som to skuzal a nejde to pisen C:\Documents and Settings\sovak\Desktop\Sovak\server\filterscripts\botik.pwn(133) : error 017: undefined symbol "to_others" C:\Documents and Settings\sovak\Desktop\Sovak\server\filterscripts\botik.pwn(134) : error 017: undefined symbol "to_others" C:\Documents and Settings\sovak\Desktop\Sovak\server\filterscripts\botik.pwn(138) : error 017: undefined symbol "to_others" C:\Documents and Settings\sovak\Desktop\Sovak\server\filterscripts\botik.pwn(139) : error 017: undefined symbol "to_others" C:\Documents and Settings\sovak\Desktop\Sovak\server\filterscripts\botik.pwn(143) : error 017: undefined symbol "to_others" C:\Documents and Settings\sovak\Desktop\Sovak\server\filterscripts\botik.pwn(144) : error 017: undefined symbol "to_others" Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase 6 Errors. Link to comment Share on other sites More sharing options...
AvestX 5 Odesláno: 2. Listopad, 2009 Share Odesláno: 2. Listopad, 2009 Nevim jo, ale skus new to_others Link to comment Share on other sites More sharing options...
JanikMan 0 Odesláno: 23. Únor, 2010 Share Odesláno: 23. Únor, 2010 prepacte za otvorenie topicu ale hodi mi to errory (87) : error 030: compound statement not closed at the end of file (started at line 52) (15) : error 004: function "GetDistanceBetweenPlayers" is not implemented cele to mam takto #include #define COLOR_RED 0xE10000AA forward GetClosestPlayer(p1); public GetClosestPlayer(p1) { new x,Float:dis,Float:dis2,person; person = -1; dis = 99999.99; for (x=0;x { if(IsPlayerConnected(x)) //pokud je hráč připojený { if(x != p1) { dis2 = GetDistanceBetweenPlayers(x,p1); if(dis2 < dis && dis2 != -1.00) { dis = dis2; person = x; } } } } return person; } forward GetDistanceBetweenPlayers(playerid,playerid2); #if defined FILTERSCRIPT public OnFilterScriptInit() { print("\n--------------------------------------"); print(" Blank Filterscript by your name here"); print("--------------------------------------\n"); return 1; } public OnFilterScriptExit() { return 1; } public OnGameModeInit() { // Don't use these lines if it's a filterscript SetGameModeText("Blank Script"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } #endif public OnPlayerText(playerid, text[]) { new bot = GetClosestPlayer(playerid); //vytvoříme nového bota new botnik[MAX_PLAYERS]; new to_others[MAX_PLAYERS]; new name[24]; GetPlayerName(bot, botnik, 24); //jméno bota if(IsPlayerNPC(bot)) //pokud neni hráč ale NPC { if(!strcmp(text,"Ahoj botniku",true)) //zpráva kterou musí hráč napsat { format(to_others,27,"%s: Ahoj, nezajdem na pivo?",name); //NPC odpoví... SetPlayerChatBubble(bot,to_others,COLOR_RED,35.0,10000); //barva a pozice bubliny } if(!strcmp(text,"botniku kde najdu prikazy?",true)) { format(to_others,16,"%s: /commands :)",name); SetPlayerChatBubble(bot,to_others,COLOR_RED,35.0,10000); } if(!strcmp(text,"botniku das mi hp?",true)) { format(to_others,18,"%s: ani náhodou :D",name); SetPlayerChatBubble(bot,to_others,COLOR_RED,35.0,10000); } return 1; } /* public GetDistanceBetweenPlayers(playerid,playerid2){ new Float:x1,Float:y1,Float:z1,Float:x2,Float:y2,Float:z2; new Float:tmpdis; GetPlayerPos(playerid,x1,y1,z1); GetPlayerPos(playerid2,x2,y2,z2); tmpdis = floatsqroot(floatpower(floatabs(floatsub(x2,x1)),2)+floatpower(floatabs(floatsub(y2,y1)),2)+floatpower(floatabs(floatsub(z2,z1)),2)); return floatround(tmpdis); } */ nj je to v new pawno pretoze som to skusal spravit ale nejde Link to comment Share on other sites More sharing options...
AvestX 5 Odesláno: 23. Únor, 2010 Share Odesláno: 23. Únor, 2010 Naco endif ? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now