Skocz do zawartości
skyvoo

zcmd - szybszy i prostszy system komend

Rekomendowane odpowiedzi

MixX ja mam kłopoty. xd 'Ciężko' mi się robi literę 'ś'

zamień se na 's', ogólnie ja wolę taką jakby skróconą wersję tego skryptu bo sobie tekst zmienię według potrzeb i potem wywołuję ja funkcję szukani komendy

co do polskich liter jeszcze, można użyć czegoś jak udb_encode tylko zamiast symboli dać polskie znaki, wtedy ą np. znaczyło by _02 i w pisaniu komendy było by:

cmd:m_02ka(playerid, params[])

//edit: brakuje linku do tematu na forum.sa-mp.com

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Równie dobrze mogło by być tak:

public OnPlayerCommandReceived(playerid, cmdtext[])
{
   if(GetPVarInt(playerid, "JAIL") == 1)
      return SendClientMessage(playerid, CZERWONY, "Jesteś w więzieniu, nie możesz używać komend!");
   return 1;
}
raczej
public OnPlayerCommandReceived(playerid, cmdtext[])
{
   if(GetPVarInt(playerid, "JAIL") == 1)
      return !SendClientMessage(playerid, CZERWONY, "Jesteś w więzieniu, nie możesz używać komend!");
   return 1;
}

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Witam,

zauważyłem że nie napisaliście jak zrobić żeby nie można było używać komend oprócz np. /exit .

Myślałem że to tak: (nie testowałem, nie mam jak)

if(cmd_exit(playerid, cmdtext) == 0 && zapisany[playerid] == 1) return Send...

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

A mi najpierw pawno wywalał błędy że mam "zbyt rozległe akapity w zcmd.inc" ale trochę zkróciłem, a teraz działa mi tylko w filterscriptach (tzn. że jak wpisuje komendy które zrobiłem w gamemode to nic się nie dzieje). Wszystko mam niby zdefiniowane pododawane itd.  :'(

początek kodu:

#include <a_samp>
#include <dudb>
#include <zcmd>
#include <kolorki>
potem ifplayercommandtext usunalem na koncu, np. komenda /ok:
CMD:ok(playerid, params[])
{
	TogglePlayerControllable(playerid, true);
	return 1;
}
i koncowka kodu:
public OnPlayerCommandReceived(playerid, cmdtext[])
{
	return 1;
}

public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
	if(!success)
	{
		new str[256];
		format(str, sizeof(str), "->> Na serwerze nie znaleziono komendy '%s', sprawdź w /pomoc", cmdtext);
		SendClientMessage(playerid, C_WHITE , str);
		return 1;
	}
	return 1;
}

Wie ktoś o co chodzi?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie. Chodziło mi o to że w gamemode mi nie działa. Było późno jak to pisałem i dlatego mnie trochę nie zrozumiałeś. W filterscriptach dodałem

#define filterscript

ale w Gamemode mi nie działa.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Może masz inny system komend? A może nie wyrzuciłeś OnPlayerCommandText? A może masz inne includy niezgodne z hookowaniem callbacków _ALS_

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie. Chodziło mi o to że w gamemode mi nie działa. Było późno jak to pisałem i dlatego mnie trochę nie zrozumiałeś. W filterscriptach dodałem

#define filterscript
ale w Gamemode mi nie działa.
z dużymi to musi być
#define FILTERSCRIPT

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

CMD:lol(playerid, params[])
{
new giveid = strval(params);
if(!IsPlayerConnected(giveid))
return SendClientMessage(playerid, -1, "Podałeś złe id");

SendClientMesage(giveid, -1, "Zostałeś naznaczony");
return 1;
}
jeśli potrzebujesz więcej argumentów np.
/pw [id] [tekst]

itp. polecam użyć sscanf, jest też o nim poradnik na forum chyba

@DOWN gr56 dzięki, mój błąd

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

sorry za odkop, ale nie dawno zacząłem robić w zcmd i mam problem.

Dlaczego gdy dodam do mapki tą komendę:

CMD:kick(playerid, params[])
{
    new player,//zmienna z id gracza którego chcemy wyrzucić
        powod[64];//tablica z powodem wyrzucenia
    if(!IsPlayerAdmin(playerid))//sprawdzamy czy gracz jest administratorem ( ! ) symbolizuje że if wykona się gdy gracz nie będzie adminem
        return SendClientMessage(playerid, 0xFF0000FF, "Nie jesteś administratorem!"); //jeżeli if się wykona wyśle wiadomość

    if(sscanf(params, "rs[64]", player, powod))//to wytłumacze poza kodem niżej
        return SendClientMessage(playerid, 0xFF0000FF, "/kick (id) (powód)");//jeżeli gracz nic nie wpisze, to wyśle mu tą wiadomość.

    if(!IsPlayerConnected(player))//sprawdzamy czy gracz jest aktywny (gra na serwerze) wykrzyknik ( ! ) oznacza że if się wykona jak gracza nie będzie
        return SendClientMessage(playerid, 0xFF0000FF, "Ten gracz nie jest podłączony!");//tutaj wysyłamy wiadomość jeżeli gracz nie jest podłączony

    //tutaj dajecie sobie formaty itd.
    Kick(player);//wyrzucamy gracza
    return 1;
}

To mam lost`a?

Jest tak nawet jak dodam "formaty"

02374303524367451758.jpg

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Też nic nadal lost

jaki lost ?! mów po polsku

chodzi ci o utratę połączenia? u kogo te info się pojawia, wyrzucanego czy wyrzucającego?

w OnPlayerDisconnect argument reason ma dobrą wartość (2 dla funkcji kick/ban) ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Chodzi mi o to, że gamemod sie nie ładuje. Pojawia się tylko "Conecting to join..." czy jakoś tak i nic. Gdy kliknę na "spawn" w wybierałce to pojawia sięcj który spada. Na screenie wcześniejszym jest.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak dodaje:

public OnPlayerCommandReceived(playerid, cmdtext[])
{
	return 1;
}
public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
	return 1;
}

to wyskakuje:

C:\Documents and Settings\Paweł\Pulpit\GameMod - GS\gamemodes\Galaxy.pwn(366) : warning 235: public function lacks forward declaration (symbol "OnPlayerCommandReceived")

C:\Documents and Settings\Paweł\Pulpit\GameMod - GS\gamemodes\Galaxy.pwn(370) : warning 235: public function lacks forward declaration (symbol "OnPlayerCommandPerformed")

Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase

2 Warnings.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×