Maksiu - 2012-04-27 15:40:08

Autor : Maksiu ja :)
Poziom : Łatwy


Na sam początek dajemy dwa includki.
Kod:
#include <a_samp> //Nasz podstawowy include
#include <zcmd>//Include zCMD, do komend !

Następnie definiojemy kolory
Kod:
#define CZERWONY 0xFF0000AA //definicja koloru czerwonego
#define NIEBIESKI 0x0000FFAA //definicja koloru zielonego
#define CIEMNOSZARY 0xA9A9A9AA //definicja koloru ciemno-szarego
#define BEZOWY 0xFFFFADAA //definicja koloru beżowego


Aby nie pisać długich wyrazów (SendClientMessage..) to dajemy :
Kod:
#define SCM SendClientMessage
#define SCMTA SendClientMessageToAll

Następnie tworzymy public, który odpowiada za wejście na serwer, czyli :
Kod:
public OnPlayerConnect(playerid)


i w nim możemy dać
Kod:
SendClientMessage(playerid, czerwony, "Witamy na serwie :!"); //Jest to nasz text, który pojawi się graczowi przy połączeniu z serwerem !


Teraz dajemy public, który będzie odpowiadał, za to co będzie się działo przy odłączeniu gracza od serwera.
Kod:
public OnPlayerDisconnect(playerid, reason)
a w nim :

Kod:

    new string[256];
    switch(reason)
    {
        case 0: format(string, sizeof(string), "Gracz : %s rozłączył się. (połączenie zerwane)", PlayerName(playerid)); //Jeżeli gracz stracił połączenie z serwem
        case 1: format(string, sizeof(string), "Gracz : %s rozłączył się. (wyszedł)", PlayerName(playerid));//Jeżeli gracz wyszedł
        case 2: format(string, sizeof(string), "Gracz : %s rozłączył się. (kick/ban)", PlayerName(playerid)); //Jeżeli gracz dostał bana albo kicka
        default: format(string, sizeof(string), "Gracz: %s rozłączył się. (nieznany powód)", PlayerName(playerid)); //Jeżeli gracz dostał CRASHA
    }
    SCMTA(CZERWONY, string);//same formaty nam nic nie dają :), tym musimy wysłać wiadomość


Dzięki powyższemu kodowi, dowiemy się jakim sposobem gracz wyszedł z serwera 

Następny public który utworzymy, będzie odpowiadał, co ma się dziać przy spawnie, czyli po kliknięciu SPAWN w wybierałce !
Kod:
public OnplayerSpawn(playerid)//Jest to nasz public


Żeby gracz miał jakąś broń, oraz kasę to :
Kod:
GivePlayerMoney(playerid, 5000); //Daje nam 5000 $
GivePlayerWeapon(playerid, 24, 250);//daje nam Desert Eagle + 250 ammo
Jeszcze najlepiej dać funkcję SetPlayerPos(playerid, X,Y,Z); aby gdzieś nas teleportowało :)


Teraz chyba robimy najważniejszy public, jakim jest OnGameModeInit, bez niego mapa będzie błędnie chodzić!
Kod:
public OnGameModeInit()


w nim powinniśmy umieścić 2 moim zdaniem podstawowe rzeczy (ustawić nazwę GameModa + zrobić aby skin normalnie biegał  ) )
Kod:
SetGameModeText("NazwaGamemoda"); //Ustawiamy nazwę GameModa
UsePlayerPedAnims();//Ustawia nam normalne bieganie



Teraz musi zrobić wybierałke 
No więc tak :
Public który odpowiada za wybierałkę to :
Kod:
public OnPlayerRequestClass(playerid, classid)
{


Do niego musimy dać pozycję gracza, pozycję kamery oraz gdzie ma patrzeć kamera, można dodać jeszcze jakieś bajery, np. Animację, ale to nie jest o tym poradnik 

Kod:

    SetPlayerPos(playerid, 2348.110351, -1494.548461, 24.000000); //Pozycja gracza
    SetPlayerFacingAngle(playerid, 86.658676); //Ustawia nas na północ
    SetPlayerCameraLookAt(playerid, 2348.110351, -1494.548461, 24.000000); //Gdzie ma patrzeć kamera
    SetPlayerCameraPos(playerid, 2348.110351 + (5 * floatsin(-86.658676, degrees)), -1494.548461 + (5 * floatcos(-86.658676, degrees)), 24.000000); //Gdzie ma leżeć kamera.


Teraz na samym dole mapy, musimy dać :
Kod:
stock PlayerName(playerid)
{
    new name[MAX_PLAYER_NAME]; //Tablica name
    GetPlayerName(playerid, name, MAX_PLAYER_NAME); //Pobiera nazwę gracza.
    return name;
}


A teraz dajemy 2 podstawowe komendy na życie oraz armor

Kod:
CMD:100hp(playerid, params[]) //Nazwa komenda
{ //klamra
    if(GetPlayerMoney(playerid) < 15000) //Sprawdzenie czy gracz ma podaną ilość kasy
        return SCM(playerid, niebieski, "(Błąd) Nie masz tylu kasy"); //Jeżeli nie to wysyła wiadomość
 
    SetPlayerHealth(playerid, 100.0); //Daje nam 100 HP
    GivePlayerMoney(playerid, -15000); //Zabiera 15000 $
    SCM(playerid, bezowy, "(Info) Dostałeś życie "); //Wysyła wiadomość, że kupiłeś życie
    SCMTA(niebieski, "(Info) {A327ED}%s [id %d] {FF9900}kupił zycie komendą {99001F}/100hp {A327ED} (15000$)"); //Wysyła wiadomość do wszystkich że gracz kupił życie
    return 1;
}

Tej komendy nie będę opisywał, ponieważ tu się zmienia tylko z SetPlayerHealth na SetPlayerArmour, czyli da nam kamizelkę :)
CMD:armor(playerid, params[])
{
    if(GetPlayerMoney(playerid) < 15000)
        return SCM(playerid, niebieski, "(Błąd) Nie masz tylu kasy");
    SetPlayerArmour(playerid, 100.0);
    GivePlayerMoney(playerid, -15000);
    SCM(playerid, ciemnoszary, "(Info) Dostałeś armor ");
    SCMTA(niebieski, "(Info) {A327ED}%s [id %d] {FF9900}kupił zycie komendą {99001F}/100hp {A327ED} (15000$)");
    return 1;
}

www.grupateoretyczna.pun.pl www.ogt.pun.pl www.gitarzystki.pun.pl www.bbo.pun.pl www.templer.pun.pl