Skocz do zawartości
KrzychuBiceps

komenda bez / typu .

Rekomendowane odpowiedzi

Witam jak zrobić komendę . (uzywany system zcmd) ja napisalem takie coś 

CMD:.(playerid, params[])
{

	return 1;
}

ale nie wiem jak zrobić taką komendę bo są taki błędy:

error 001: expected token: "(", but found "."
error 001: expected token: ";", but found "("
error 010: invalid function or declaration

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
CMD:komenda(playerid, params[])
{
	//
	return 1;
}

A myślę że komendę bez / zrobisz w OnPlayerText używając funkcji strcmp :))

Edytowane przez Jaev

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Spójrz co napisałem pod komendą ...

public OnPlayerText(playerid, text[])
{
    new pText[144];
    format(pText, sizeof (pText), "(%d) %s", playerid, text);
    SendPlayerMessageToAll(playerid, pText);
    return 0; // ignore the default text and send the custom one
}

 

public OnPlayerText(playerid, text[])
{
	if(strcmp(text, ".cmd", false) == 0)
	{
		//wyświetl dialog z cmd
		return 1;
	}
	return 0;
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
if(strcmp(text, ".cmd", false) == 0)

Od tego jest właśnie ten warunek, że jeżeli wpisze ".cmd" to się to wykona, inaczej leci dalej.

W tym callbacku możesz np też rangi dorobić :E

Edytowane przez Jaev

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jeśli chcesz zrobić komendy na "." zamiast na "/" to tak nie da się - nie da się zastąpić, ale można zrobić tak, aby działało na "/" lub na ".".

Sprawdź czy to zadziała tak jak chcesz:

public OnPlayerText(playerid, text[])
{
  if (text[0] == '.') if (OnPlayerCommandText(playerid, text)) return 0;

  // obsługa zwykłego chatu
}

Akurat zcmd nie sprawdza pierwszego znaku:

funcname[MAX_FUNC_NAME];
while (cmdtext[++pos] > ' ')
{
  funcname[pos-1] = tolower(cmdtext[pos]);
}

więc powyższe rozwiązanie (pierwsza ramka z kodem) powinno zadziałać.

Edytowane przez PrzMas

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

error 004: function "zcmd_OnPlayerCommandText" is not implemented

ja nie chce zadnego cmd tylko np wpiszesz obojętnie co z kropką na poczatku i np serwer pokaze innym graczom nad twoją glową co wpisales np ty wpisales .siema test test a nad głową pokazane jest siema test test to chyba SetPlayerChatBubble

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
public OnPlayerText(playerid, text[])
{
  if (text[0] == '.') return SetPlayerChatBubble(playerid, text[1], 0xFF0000FF, 100.0, 10000), 0;

  // obsługa zwykłego chatu
}

 

Edytowane przez Michalec

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

cos takiego czy nie ?     if (text[0] == '.') 
    {
        SendClientMessage(playerid, COLOR_WHITE, "wyslales text który pokazal się nad twoją glową dla innych graczy");
        return SetPlayerChatBubble(playerid, text[1], 0xFF0000FF, 100.0, 10000), 0;
    }
    

	if (text[0] == '.') 
	{
		SendClientMessage(playerid, COLOR_WHITE, "wyslales text który pokazal się nad twoją glową dla innych graczy");
		return SetPlayerChatBubble(playerid, text[1], 0xFF0000FF, 100.0, 10000), 0;
	}
	

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
public OnPlayerText(playerid, text[])
{
  if (text[0] == '.')
  {
    SendClientMessage(playerid, -1, "Wiadomość");
    SetPlayerChatBubble(playerid, text[1], 0xFF0000FF, 100.0, 10000), 0; // wiadomość po "."
  }
  // obsługa zwykłego chatu
}

 

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach
if(text[0] == '.')
{
    SendClientMessage(playerid, -1, "Wiadomość");
    SetPlayerChatBubble(playerid, text[1], 0xFF0000FF, 100.0, 10000);
    return 0;
}

Kombinuj, a nie, że błąd wyskoczył.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

no ok a z tym dobrze zrobilem ? i ten błąd zdążyłem zauważyć :D 

if (text[0] == '.')
	{
		SendClientMessage(playerid, -1, "Wyslales wiadomosc ktora pokazala sie graczom nad twoją głową");
		SetPlayerChatBubble(playerid, text[1], 0xFF0000FF, 10, 5000); // wiadomość po "."
	}
	else
	{
		if(Player[playerid][Logged] == true)
		{
			new NazwaGracza[MAX_PLAYER_NAME];
			new TextNaChacie[512];
			GetPlayerName(playerid, NazwaGracza, sizeof(NazwaGracza));
			format(TextNaChacie, sizeof(TextNaChacie), "[%i]%s mówi: %s", playerid, NazwaGracza, text);
			MessageRange(playerid, 10, COLOR_WHITE, TextNaChacie);
		}
	}

 

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ę.

×