Arkadaşlar roleplay server yazmayı planlıyorum fakat şu /me ve /do yu nasıl yazıcam mantığını kavrayamadım anlatabilirmisiniz ?
Hocam bilgin varsa bana eğitim verebilir misin?
Alıntı yapılan: muzaffer22 - 29 Ağustos 2017, 13:28:57 Hocam bilgin varsa bana eğitim verebilir misin?Güzel kardeşim olsa kafada birşeyler verirdim .Tekrardan kb
Şu işinize yarayabilir, /do için de aynı şekilde yaparsınız. Oyunculara gönderdiği mesaj biçimiyle, rengiyle oynarsınız.if (!strcmp(cmdtext, "/me", true , 3)) // 3 is the length of /me { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; }
Alıntı yapılan: FrankTR - 29 Ağustos 2017, 13:32:07 Şu işinize yarayabilir, /do için de aynı şekilde yaparsınız. Oyunculara gönderdiği mesaj biçimiyle, rengiyle oynarsınız.if (!strcmp(cmdtext, "/me", true , 3)) // 3 is the length of /me { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; }Hocam yaptım ama gırınce komut çalışmıyor.zcmd ıle denedım normal komut sıstemıyle denedım unknown command dıyor.
Alıntı yapılan: kerematayy - 29 Ağustos 2017, 14:12:52 Alıntı yapılan: FrankTR - 29 Ağustos 2017, 13:32:07 Şu işinize yarayabilir, /do için de aynı şekilde yaparsınız. Oyunculara gönderdiği mesaj biçimiyle, rengiyle oynarsınız.if (!strcmp(cmdtext, "/me", true , 3)) // 3 is the length of /me { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; } Hocam yaptım ama gırınce komut çalışmıyor.zcmd ıle denedım normal komut sıstemıyle denedım unknown command dıyor.Şu şekilde denediniz mi? Hangi komut işlemcisini kullanıyorsunuz?
CMD:me(playerid, params[]) { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; }
Alıntı yapılan: FrankTR - 29 Ağustos 2017, 14:24:23
Alıntı yapılan: kerematayy - 29 Ağustos 2017, 14:12:52 Alıntı yapılan: FrankTR - 29 Ağustos 2017, 13:32:07 Şu işinize yarayabilir, /do için de aynı şekilde yaparsınız. Oyunculara gönderdiği mesaj biçimiyle, rengiyle oynarsınız.if (!strcmp(cmdtext, "/me", true , 3)) // 3 is the length of /me { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; } Hocam yaptım ama gırınce komut çalışmıyor.zcmd ıle denedım normal komut sıstemıyle denedım unknown command dıyor. Şu şekilde denediniz mi? Hangi komut işlemcisini kullanıyorsunuz? CMD:me(playerid, params[]) { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; }Zcmd kullanmaktayım bıde sscanf2 var onları kullanıyorum.Bırde 4 error aldım .
C:\Program Files (x86)\Rockstar Games\Yeni klasör (2)\gamemodes\Untitled.pwn(8) : error 017: undefined symbol "cmdtext"
C:\Program Files (x86)\Rockstar Games\Yeni klasör (2)\gamemodes\Untitled.pwn(8) : warning 215: expression has no effect
C:\Program Files (x86)\Rockstar Games\Yeni klasör (2)\gamemodes\Untitled.pwn(8) : error 001: expected token: ";", but found "]"
C:\Program Files (x86)\Rockstar Games\Yeni klasör (2)\gamemodes\Untitled.pwn(8) : error 029: invalid expression, assumed zero
C:\Program Files (x86)\Rockstar Games\Yeni klasör (2)\gamemodes\Untitled.pwn(8) : fatal error 107: too many error messages on one line
Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
4 Errors.
Alıntı yapılan: FrankTR - 29 Ağustos 2017, 13:32:07 if (!strcmp(cmdtext, "/me", true , 3)) // 3 is the length of /me { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; }SendClientMessageToAll fonksiyonu bütün oyunculara mesaj gönderir. /me komutu yanında olan oyunculara gitmelidir. ProxDetector fonksiyonunu kullanarak bunu sağlayabilir. Ya da kendi isplayerinrangeofpoint ile yapabilir. (Aşağıda komutunu verdim)
Komutuna gelecek olursak, hata vermesinin sebebi bu forumdaki pawn tagının bozuk olmasıdır. %&; gibi bozuk karakterler gösteriyor yani. Pawn tagı yerine code tagını kullan.
Aşağıdaki komutu kullanabilirsin.
CMD:me(playerid, params[]) { new str[128], mesaj[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); if(sscanf(params, "s[128]", mesaj)) return SendClientMessage(playerid, -1, "*** /me (Eylem)"); GetPlayerPos(playerid, x, y, z); for(new i=0; i <= GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "*** %s: {8C8E8F}%s", name, mesaj); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; } CMD:do(playerid, params[]) { new mesaj[128]; if(sscanf(params, "s[128]", mesaj)) return SendClientMessage(playerid, -1, "*** /do (Durum)"); new str[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); GetPlayerPos(playerid, x, y, z); for(new i=0; i <= GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "{8C8E8F}*** %s: {D1D1D1}(( %s ))", name, mesaj); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; }Not: Detaylı yazmadığım için hatalar olabilir. Gelişigüzel yazdım. İyi kullanımlar.
Alıntı yapılan: Jawié - 29 Ağustos 2017, 18:33:55 Alıntı yapılan: FrankTR - 29 Ağustos 2017, 13:32:07 if (!strcmp(cmdtext, "/me", true , 3)) // 3 is the length of /me { if (!cmdtext[3])return SendClientMessage(playerid, 0xFF0000FF, "USAGE: /me [action]"); new str[128]; GetPlayerName(playerid, str, sizeof (str)); for mat(str, sizeof (str), "* %s %s", str, cmdtext[4]); SendClientMessageToAll(0xFFFF00AA, str); return 1; } SendClientMessageToAll fonksiyonu bütün oyunculara mesaj gönderir. /me komutu yanında olan oyunculara gitmelidir. ProxDetector fonksiyonunu kullanarak bunu sağlayabilir. Ya da kendi isplayerinrangeofpoint ile yapabilir. (Aşağıda komutunu verdim) Komutuna gelecek olursak, hata vermesinin sebebi bu forumdaki pawn tagının bozuk olmasıdır. %&; gibi bozuk karakterler gösteriyor yani. Pawn tagı yerine code tagını kullan. Aşağıdaki komutu kullanabilirsin.CMD:me(playerid, params[]) { if(!params) return SendClientMessage(playerid, -1, "*** /me (Eylem)"); new str[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); GetPlayerPos(playerid, x, y, z); for(new i=0; i < GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "*** %s: {8C8E8F}%s", name, params); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; } CMD:do(playerid, params[]) { if(!params) return SendClientMessage(playerid, -1, "*** /do (Durum)"); new str[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); GetPlayerPos(playerid, x, y, z); for(new i=0; i < GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "{8C8E8F}*** %s: {D1D1D1}(( %s ))", name, params); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; }Not: Detaylı yazmadığım için hatalar olabilir. Gelişigüzel yazdım. İyi kullanımlar.C:\Program Files (x86)\Rockstar Games\Yeni klasör (2)\gamemodes\grandlarc.pwn(14) : error 033: array must be indexed (variable "params")
C:\Program Files (x86)\Rockstar Games\Yeni klasör (2)\gamemodes\grandlarc.pwn(30) : error 033: array must be indexed (variable "params")
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
2 Errors.
hataları alıyorum
CMD:me(playerid, params[]) { new str[128], mesaj[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); if(sscanf(params, "s[128]", mesaj)) return SendClientMessage(playerid, -1, "*** /me (Eylem)"); GetPlayerPos(playerid, x, y, z); for(new i=0; i <= GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "*** %s: {8C8E8F}%s", name, mesaj); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; } CMD:do(playerid, params[]) { new mesaj[128]; if(sscanf(params, "s[128]", mesaj)) return SendClientMessage(playerid, -1, "*** /do (Durum)"); new str[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); GetPlayerPos(playerid, x, y, z); for(new i=0; i <= GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "{8C8E8F}*** %s: {D1D1D1}(( %s ))", name, mesaj); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; }
Alıntı yapılan: Jawié - 29 Ağustos 2017, 19:30:44 CMD:me(playerid, params[]) { new str[128], mesaj[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); if(sscanf(params, "s[128]", mesaj)) return SendClientMessage(playerid, -1, "*** /me (Eylem)"); GetPlayerPos(playerid, x, y, z); for(new i=0; i <= GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "*** %s: {8C8E8F}%s", name, mesaj); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; } CMD:do(playerid, params[]) { new mesaj[128]; if(sscanf(params, "s[128]", mesaj)) return SendClientMessage(playerid, -1, "*** /do (Durum)"); new str[128], name[24], Float:x, Float:y, Float:z; GetPlayerName(playerid, name, 24); GetPlayerPos(playerid, x, y, z); for(new i=0; i <= GetPlayerPoolSize(); i++) { if(IsPlayerInRangeOfPoint(i, 20.0, x, y, z)) { format(str, sizeof(str), "{8C8E8F}*** %s: {D1D1D1}(( %s ))", name, mesaj); SendClientMessage(i, 0xD1D1D1FF, str); } } return 1; }Teşekkürler.Çalıştı fakat do da ooc konusmayı yapmışsınız.Artık onu da /b ye adarım artık.
Alıntı yapılan: kerematayy - 29 Ağustos 2017, 19:47:51 Teşekkürler.Çalıştı fakat do da ooc konusmayı yapmışsınız.Artık onu da /b ye adarım artık. Yazıyı düzenlemek zor olmasa gerek. Kendinize göre düzenleyebilirsiniz.