All pastes #493353 Raw Edit

Something

public text v1 · immutable
·published 2007-05-17 18:41 UTC
rendered paste body
//include
#include <a_samp>
#include <float>
#include <core>
#include <file>
#include <dudb>
#include <dini>

static gTeam[MAX_PLAYERS];
new gPlayerClass[MAX_PLAYERS];
new logged[MAX_PLAYERS];
new zlehaslo[MAX_PLAYERS];
new logintimeout[MAX_PLAYERS];
new giveplayer[MAX_PLAYER_NAME];
new sendername[MAX_PLAYER_NAME];
#define FILE_TOTALSTAT "totalstat.ini"
//------------dcmd--------------

#define dcmd(%1,%2,%3) if ((strcmp(%3, "/%1", true, %2+1) == 0)&&(((%3[%2+1]==0)&&(dcmd_%1(playerid,"")))||((%3[%2+1]==32)&&(dcmd_%1(playerid,%3[%2+2]))))) return 1

new gRoundTime = 3600000; // 60 minut
new savePos;
new giveplayerid;

	//--TEAM--------------------------
#define TEAM_GROVE 0
#define TEAM_GROVE_COLOR 0x0080FFFF
#define TEAM_BALLAS 1
#define TEAM_BALLAS_COLOR 0x9E3DFFAA
#define TEAM_VAGOS 2
#define TEAM_VAGOS_COLOR 0xFFD700AA
#define TEAM_AZTECAS 3
#define TEAM_AZTECAS_COLOR 0x00CED3AA

//kolory
#define COLOR_GREEN 0x33AA33AA
#define COLOR_GREY 0xAFAFAFAA
#define FIOLETOWY 0x9E3DFFAA
#define COLOR_LIGHTBLUE 0x0000FFAA
#define BEZOWY 0xFFFFADAA
#define BIALY 0xFFFFFFAA
#define BLEKITNY 0x00FFFFAA
#define BORDOWY 0x99001FAA
#define BRAZOWY 0x997A00AA
#define CIEMNY_ZIELONY 0x336633AA
#define CZARNY 0x000000AA
#define CZERWONY 0xFF0000AA
#define FIOLETOWY 0x9E3DFFAA
#define NIEBIESKI 0x0000FFAA
#define POMARANCZOWY 0xFF8000AA
#define ROZOWY 0xFF66CCAA
#define SZARY 0xB0B0B0AA
#define ZIELONY 0x00CC00AA
#define ZOLTY 0xFFFF00AA


#define MAX_SAVE 64
new savedNames[MAX_SAVE][1];
new savedMoney[MAX_SAVE][1];
new savedScore[MAX_SAVE][1];

//


//-----------------------------------------------------------------------------

main()
{
	print("\n----------------------------------");
	print("  LS Gang War Beta        "            );
	print("----------------------------------\n");
}


public OnGameModeInit()
{

	print("GameModeInit(LS Gang war 0.1)");
	SetGameModeText("LS Gang War 0.1");
SetTimer("GameModeExitFunc", gRoundTime, 0);
//Skiny
//plaerys
 AddPlayerClass(107,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove
	AddPlayerClass(106,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove
	AddPlayerClass(105,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove
	AddPlayerClass(195,2495.2207,-1687.3169,13.5152,351.7600,0,0,29,650,22,260); // Grove
	AddPlayerClass(102,832.2958,-1080.4476,24.2969,184.2249,4,0,25,320,32,550); // Ballas 1
	AddPlayerClass(103,832.2958,-1080.4476,24.2969,184.2249,4,0,25,320,32,550); // Ballas 2
	AddPlayerClass(104,832.2958,-1080.4476,24.2969,184.2249,4,0,25,320,32,550); // Ballas 3
	AddPlayerClass(110,2459.0442,-949.4450,80.0800,180.7668,4,0,28,600,27,160); // Vagos
	AddPlayerClass(109,2459.0442,-949.4450,80.0800,180.7668,4,0,28,600,27,160); // Vagos
	AddPlayerClass(108,2459.0442,-949.4450,80.0800,180.7668,4,0,28,600,27,160); // Vagos
	AddPlayerClass(114,1761.7893,-1892.7225,13.5551,269.0211,22,280,29,545,25,180); // Aztecas
	AddPlayerClass(115,1761.7893,-1892.7225,13.5551,269.0211,22,280,29,545,25,180); // Aztecas
	AddPlayerClass(116,1761.7893,-1892.7225,13.5551,269.0211,22,280,29,545,25,180); // Aztecas



	//samochody
 //TEAM BALLAS
	AddStaticVehicle(566,1884.9437,-1266.3868,13.2813,94.9774,95,1);
AddStaticVehicle(566,1854.9448,-1210.8865,20.1397,0.8816,83,1);
AddStaticVehicle(566,1967.0892,-1219.9951,24.9483,182.0590,83,1);
AddStaticVehicle(481,1991.1158,-1230.2188,19.9276,130.2759,3,3); 
AddStaticVehicle(481,1883.8904,-1253.2983,13.0437,88.8027,6,6); 
	return 1;
}

public OnPlayerConnect(playerid)

{
GameTextForPlayer(playerid,"Los santos: ~r~Gang War",2500,5);
SendClientMessage(playerid,ZOLTY,"Witaj na serverze LS Gang War jezeli chcesz uzyskac pomoc wpisz /pomoc");
GivePlayerMoney(playerid, 1000);

  SetPlayerColor(playerid, COLOR_GREY); // Color na poczatku
  if(gTeam[playerid] == TEAM_GROVE) {
  SetPlayerColor(playerid, SZARY);

	for(new i = 0; i < MAX_SAVE; i++)
 {
  if(isStringSame(savedNames[i], ReturnPlayerName(playerid), MAX_PLAYER_NAME))
  {
			StatGivePlayerMoney(playerid, savedMoney[i][0]);
		      SetPlayerScore(playerid, savedScore[i][0]);
      
		        	     

			savedScore[i][0]=0;
   savedMoney[i][0]=0;
  



   SendClientMessage(playerid, POMARANCZOWY, "Twoje pieni&#261;dze i punkty zosta&#322;y przywrócone!");
		}
	}


	new playername[MAX_PLAYER_NAME];
  GetPlayerName(playerid, playername[playerid], MAX_PLAYER_NAME);
  if (dini_Exists(udb_encode(playername[playerid])))
  {SendClientMessage(playerid,CZERWONY,"Twoj nick jest zarejstrowany jesli nie zalogujesz sie w ciagu 20 sekund zostaniesz wyrzucony!");

  logintimeout[playerid] = SetTimer("LoginTimeout", 20000, 0);
  new bmp[256];

   bmp=dini_Get(udb_encode(playername),"kasa");

  } else {
          SendClientMessage(playerid, ZIELONY, "* Witamy, mo&#380;esz si&#281; zarejestrowa&#263; komend&#261;: /register [has&#322;o]");
          logged[playerid] = 1;
         }
	}
}

 



public OnGameModeExit()
{
	print("GameModeExit()");
	return 1;
}
public zapisz(playerid)
{
new string[256];
new playername[MAX_PLAYER_NAME];



GetPlayerName(playerid, playername, MAX_PLAYER_NAME);

 if (dini_Exists(udb_encode(playername)))
 {
		  dini_IntSet(udb_encode(playername),"kasa",GetPlayerMoney(playerid));
	


		  

	  	
  } else {
			format(string, sizeof(string), "* %s nie ma takiego konta.", playername);
			SendClientMessage(playerid, CZERWONY, string);
		}

 return 1;
}

//---------------------------------------------------------------------------------------

//------------------------------------------------------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
	SetPlayerClass(playerid, classid);

	SetupPlayerForClassSelection(playerid);
	gPlayerClass[playerid] = classid;
	switch (classid) {
	    case 0,1,2:
	        {
   GameTextForPlayer(playerid, "~g~GROVE", 500, 3);
   SetPlayerInterior(playerid,0);
   SetPlayerPos(playerid,2495.2227,-1686.6245,13.5142);
   SetPlayerFacingAngle(playerid, 70.0);
   SetPlayerCameraPos(playerid,2494.6362,-1679.8091,13.3386);
   SetPlayerCameraLookAt(playerid,2494.6362,-1579.8091,13.3386);
       
}

  case 3,4,5:{
  GameTextForPlayer(playerid, "~p~BALLAS", 500, 3);
	}
	case 6,7,8:
	{
	 GameTextForPlayer(playerid, "~y~VAGOS", 500, 3);

	}
	case 9,10,11:
	{
	GameTextForPlayer(playerid, "~b~AZTECAS", 500, 3);

	} }
	
        return 1;
}
//----------------------------------------------------------------------------------------
public OnPlayerDisconnect(playerid)
{{
 format(savedNames[savePos], MAX_PLAYER_NAME, "%s",ReturnPlayerName(playerid));

  savedMoney[savePos][0] = GetPlayerMoney(playerid);
	 savedScore[savePos][0] = GetPlayerScore(playerid);


 	

		savePos++;
		if(savePos >= MAX_SAVE)
  savePos = 0;
zapisz(playerid);
  
}
 return 1;
 }

//----------------------------------------------------------------------------------------

public LoginTimeout()
{
   for (new i=0;i<MAX_PLAYERS;i++)
   {
 		 if (logged[i] == 0 && GetPlayerState(i) != PLAYER_STATE_NONE)
    {
     KickMsg(i, "Ochrona!", "Czas na zalogowanie si&#281; sko&#324;czy&#322;!");
    }
   }
}
//-------------------------------------------------------------------------------------------
public OnPlayerSpawn(playerid)

	{

	SetPlayerInterior(playerid,0);

	if(gTeam[playerid] == TEAM_GROVE) {

	SetPlayerColor(playerid,COLOR_GREEN);// Green
	 
GivePlayerWeapon(playerid,26,100);

		}
	else if(gTeam[playerid]==TEAM_BALLAS) {
		SetPlayerColor(playerid,FIOLETOWY);
	
	}
	else if (gTeam[playerid]==TEAM_VAGOS) {
	SetPlayerColor(playerid,ZOLTY);

	}
else if (gTeam[playerid]==TEAM_VAGOS) {
	SetPlayerColor(playerid,COLOR_LIGHTBLUE);
	
	}
	return 1;
}
//-------------------------------------------------------------------------------------------

public OnPlayerDeath(playerid, killerid, reason)
{ 

  new killerstate=GetPlayerState(killerid);

	new killedScore=GetPlayerScore(playerid);
 


GameTextForPlayer(playerid,"~w~WASTED",3000,2);
//self kill
    	  if(killerid == INVALID_PLAYER_ID)
   {
    SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
    ResetPlayerMoney(playerid);
SetPlayerScore(playerid, killedScore-1);
 

  
	  }
    
    


else {

	    // Valid kill
	    SendDeathMessage(killerid,playerid,reason);
            SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
            GivePlayerMoney(killerid, 1000);
          


}

//team kill
 if(gTeam[killerid] != gTeam[playerid]) {

		new warning[256];

		format(warning, sizeof(warning), "Be careful! You have been punished for teamkilling.");

		SendClientMessage(killerid, 0xFFFF00AA, warning);

		SendDeathMessage(killerid,playerid,reason);

		GivePlayerMoney(killerid, -1000);

		SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
}
//DB
if((IsPlayerInAnyVehicle(killerid) && !IsPlayerInAnyVehicle(playerid) && killerstate == PLAYER_STATE_DRIVER && reason != WEAPON_VEHICLE)) {
	new warning[256];


		format(warning, sizeof(warning), "Bez DB.");

		SendClientMessage(killerid, 0xFFFF00AA, warning);

		SendDeathMessage(killerid,playerid,reason);

		GivePlayerMoney(killerid, -1000);

		SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
		}


        if (dini_Exists(udb_encode(Killer(killerid))))
        {
        new tmp[256];
         tmp = dini_Get(udb_encode(Killer(killerid)), "zabojstw");
			         dini_IntSet(udb_encode(Killer(killerid)), "zabojstw", strval(tmp)+1);
       

        if (!dini_Exists(FILE_TOTALSTAT)) dini_Create(FILE_TOTALSTAT);
          tmp = dini_Get(FILE_TOTALSTAT, "zabojstwa");
		           dini_IntSet(FILE_TOTALSTAT, "zabojstwa", strval(tmp)+1);
}


return 1;
}
//------------------------------------------------------------------------------
public StatGivePlayerMoney(playerid, amount)
{
new tmp[256];
{
if (IsPlayerConnected(playerid))

if (GetPlayerMoney(playerid)+amount<=50000000)

{
GivePlayerMoney(playerid,amount);

if (!dini_Exists(FILE_TOTALSTAT)) dini_Create(FILE_TOTALSTAT);

if (amount > 0)
tmp=dini_Get(FILE_TOTALSTAT,"pieniadzezdobyte");
dini_IntSet(FILE_TOTALSTAT,"pieniadzezdobyte",strval(tmp)+amount);
} else {
			          tmp = dini_Get(FILE_TOTALSTAT, "pieniadzestracone");
				            dini_IntSet(FILE_TOTALSTAT, "pieniadzestracone", strval(tmp)-amount);
}
     else {
		    SendClientMessage(playerid, CZERWONY, "* Uwaga!!! Masz maximum pieni&#281;dzy. Nie mo&#380;esz mie&#263; ich wi&#281;cej przy sobie!");
		    SendClientMessage(playerid, CZERWONY, "* Udaj si&#281; do banku, aby wp&#322;aci&#263; pieni&#261;dze na konto. Banki s&#261; w sklepach 24/7");
		    return 0;
		}
  }

  return 1;
  }
//---------------------------------------------------------------------------------
public OnVehicleSpawn(vehicleid)
{
	printf("OnVehicleSpawn(%d)", vehicleid);
	return 1;
}
//---------------------------------------------------------------------------------
public OnVehicleDeath(vehicleid, killerid)
{
	printf("OnVehicleDeath(%d, %d)", vehicleid, killerid);
	return 1;
}
//---------------------------------------------------------------------------------------------
public OnPlayerText(playerid,text[])
{
//TEAM CHAT
 if(text[0] == '!')
 {
    new name[24], string[256];
    GetPlayerName(playerid, name, 24);
    format(string, sizeof(string), "[TC] %s: %s", name, text[1]);

    for(new i = 0; i < MAX_PLAYERS; i++)
    {
      if(IsPlayerConnected(i))
      {
        if(gTeam[i] == gTeam[playerid])
        SendClientMessage(i, COLOR_LIGHTBLUE, string);
      }
    }
  return 0;
 }


return 1;
}

 
//------------------------------------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[]){
	dcmd(register,    8, cmdtext);
	dcmd(login,       5, cmdtext);
	dcmd(pomoc,       5, cmdtext);
	dcmd(givecash,       8, cmdtext);
return SendClientMessage(playerid, CZERWONY, "SERVER: Nie ma takiej komendy!");
}
	dcmd_register(playerid, cmdtext[])
{
	{
new tmp[256];
new tmp2[256];
new idx;
new playername[MAX_PLAYERS];
new string[256];
	{
	tmp2=dini_Get(FILE_TOTALSTAT,"Gracze");
	tmp=strtok(cmdtext,idx);
	    		GetPlayerName(playerid, playername, sizeof(playername));
	    		if (20<strlen(tmp)||strlen(tmp)<5)
	    		{ 
	    		SendClientMessage(playerid,CZERWONY,"Haslo musi miec 5 liter ale nie wiecej niz 20");
	return 1;
		}
 if(!strlen(tmp))
 {
 SendClientMessage(playerid,CZERWONY,"Wpisz:/register[haslo] aby sie zarejstrowac");
}
if (!dini_Exists(udb_encode(playername)))
{
dini_Create(udb_encode(playername));
dini_IntSet(udb_encode(playername), "haslo", udb_hash(tmp));
if (!dini_Exists(FILE_TOTALSTAT)) dini_Create(FILE_TOTALSTAT);

            tmp2 = dini_Get(FILE_TOTALSTAT, "users");
                dini_IntSet(FILE_TOTALSTAT, "users", strval(tmp2)+1);
            				   dini_Set(FILE_TOTALSTAT, "lastuser", playername);

		format(string, sizeof(string), "* %s (id: %d) utworzy&#322;e&#347;/a&#347; nowe konto. Twoje has&#322;o to: >>> %s <<< Zapami&#281;taj je!!!", playername, playerid, tmp);
				SendClientMessage(playerid, ZIELONY, string);
			}
			else {
				format(string, sizeof(string), "* %s jest ju&#380; zarejestrowany.", playername,tmp);
				SendClientMessage(playerid, CZERWONY, string);
			}
	    return 1;
	}
	}
	}
//------------------------------------------------------------------------------
	dcmd_login(playerid, cmdtext[]){
new tmp[256];
new tmp2[256];
new idx;
new playername[MAX_PLAYERS];
new string[256];

	tmp=strtok(cmdtext,idx);
	GetPlayerName(playerid,playername,sizeof(playername));
	if(!strlen(tmp))
	{
	SendClientMessage(playerid,CZERWONY,"Wpisz:/login [haslo]");
	}
	if (dini_Exists(udb_encode(playername)))
{
if (logged[playerid]== 1)
{  SendClientMessage(playerid, CZERWONY, "* Jeste&#347; ju&#380; zalogowany!");
				   } else {
				   tmp2=dini_Get(udb_encode(playername),"haslo");
				   }

				

				   if (udb_hash(tmp) != strval(tmp2)){
				        format(string, sizeof(string), "* %s (id: %d) wpisa&#322;e&#347; z&#322;e has&#322;o: %s.", playername, playerid, tmp);
						         printf(string);
			    	      	SendClientMessage(playerid, CZERWONY, "* Poda&#322;e&#347; z&#322;e has&#322;o.");
			    	      	GameTextForPlayer(playerid, "~r~Zle haslo!", 3000, 5);
  			    	 	   zlehaslo[playerid]++;
 		            if (zlehaslo[playerid] >= 5) KickMsg(playerid, "Ochrona", "Za du&#380;o prób!");
}
	else { logged[playerid] = 1;
					                 KillTimer(logintimeout[playerid]);

						logged[playerid] = 1;
						format(string, sizeof(string), "--- %s (id: %d) zalogowany . haslo: %s.", playername, playerid, tmp);
						printf(string);
						SendClientMessage(playerid, COLOR_GREEN, "* JEstes zalogowany!");
					}
					
				
 }

return 1;
}
//------------------------------------------------------------------------------
dcmd_pomoc(playerid,cmdtext[])  {
#pragma unused cmdtext
		SendClientMessage(playerid, ZOLTY,"Witaj na LS Gang War aby zobaczyc liste komend wpisz /komendy");
	
		return 1;
	}
	
 dcmd_givecash(playerid, cmdtext[])
{
  new idx;
  new string[256];
  new tmp[256];
  new playermoney;
  new moneys;
		tmp = strtok(cmdtext, idx);

		if(!strlen(tmp))
  {
			SendClientMessage(playerid, BIALY, "* WPISZ: /givecash [idgracza] [kwota]");
			return 1;
		}
		giveplayerid = strval(tmp);

		tmp = strtok(cmdtext, idx);
		if(!strlen(tmp))
  {
			SendClientMessage(playerid, BIALY, "* WPISZ: /givecash [idgracza] [kwota]");
			return 1;
		}
		moneys = strval(tmp);
		if (IsPlayerConnected(giveplayerid))
  {
			GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
			GetPlayerName(playerid, sendername, sizeof(sendername));
			playermoney = GetPlayerMoney(playerid);

		 if (giveplayerid == playerid) {
				SendClientMessage(playerid, CZERWONY, "* Nie mo&#380;esz wys&#322;a&#263; sobie pieni&#281;dzy!");
				return 1;
			}

			if (moneys > 0 && playermoney >= moneys)
   {
				StatGivePlayerMoney(playerid, (0 - moneys));
				StatGivePlayerMoney(giveplayerid, moneys);
				format(string, sizeof(string), "* Odda&#322;e&#347;/a&#347; graczowi %s (id: %d), $%d pieni&#281;dzy.", giveplayer,giveplayerid, moneys);
				SendClientMessage(playerid, ZOLTY, string);
				format(string, sizeof(string), "* Otrzyma&#322;e&#347;/a&#347; $%d pieni&#281;dzy od gracza %s (id: %d).", moneys, sendername, playerid);
				SendClientMessage(giveplayerid, ZIELONY, string);
  	} else {
	      SendClientMessage(playerid, CZERWONY, "* Nieprawid&#322;owa kwota transakcji.");
   }
  } else {
				      format(string, sizeof(string), "* %d nie ma takiego gracza!", giveplayerid);
			      	SendClientMessage(playerid, CZERWONY, string);
  }
 return 1;
}
//------------------------------------------------------------------------------
public KickMsg(playerid, kickername[], reason[])
{
new string[256];
	new tmp[256];
	new playername[MAX_PLAYER_NAME];
	
	format(string, sizeof(string), "*** %s (id: %d) zosta&#322;/&#322;a wyrzucony/na przez administratora: %s. Powód: %s ***", playername, playerid, kickername, reason);


GetPlayerName(playerid,playername,sizeof(playername));
printf(string);
	SendClientMessageToAll(CZERWONY, string);
	Kick(playerid);
	tmp=dini_Get(FILE_TOTALSTAT,"kicki");
		dini_IntSet(FILE_TOTALSTAT, "kicki", strval(tmp)+1);
return 1;
}
//------------------------------------------------------------------------------
public SavedUpdate()
{
	for(new i = 0; i < MAX_SAVE; i++)
 {
				savedScore[i][0] = 0;
    savedMoney[i][0] = 0;
				savedNames[i][0] = 0;
	  
	}
}

//------------------------------------------------------------------------------


public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger);
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid);
	return 1;
}




public OnPlayerEnterCheckpoint(playerid)
{
	printf("OnPlayerEnterCheckpoint(%d)", playerid);
	return 1;
}

public SetupPlayerForClassSelection(playerid)
{
	SetPlayerInterior(playerid,14);
	SetPlayerPos(playerid,258.4893,-41.4008,1002.0234);
	SetPlayerFacingAngle(playerid, 90.0);
	SetPlayerCameraPos(playerid,256.0815,-43.0475,1003.0234);
	SetPlayerCameraLookAt(playerid,258.4893,-41.4008,1002.0234);

}

//-----------------------------------------------------------------------------

public OnPlayerLeaveCheckpoint(playerid)
{
	printf("OnPlayerLeaveCheckpoint(%d)", playerid);
	return 1;
}
public PlayerName(playerid){
	new Name[MAX_PLAYER_NAME];
	GetPlayerName(playerid, Name, sizeof(Name));
	return Name;
}
public LogIn(playerid)
{
	logged[playerid]=1;
	return 1;
}

isStringSame(const string1[], const string2[], len) {
for(new i = 0; i < len; i++) {
    if(string1[i]!=string2[i])
        return 0;
    if(string1[i] == 0 || string1[i] == '\n')
        return 1;
    }
    return 1;
}

public ReturnPlayerName(playerid) //By Alex "Y_Less" Cole
{
	new pname[MAX_PLAYER_NAME];
	GetPlayerName(playerid, pname, sizeof (pname));
	return pname;
}
public Killer(killerid)
{
new killer[MAX_PLAYER_NAME];
GetPlayerName(killerid, killer, sizeof(killer));
 return killer;
}
//--------------------------------------------------------------------------------
//-------------------------------------------------------------------------------

SetPlayerClass(playerid, classid)
{

	if(classid == 0)
 {
	 gTeam[playerid] = TEAM_GROVE;
	 
	}
else if(classid==1)
{
gTeam[playerid] = TEAM_BALLAS;
}
else if(classid==2)
{
gTeam[playerid] = TEAM_VAGOS;
}
else if(classid==3)
{
gTeam[playerid] = TEAM_AZTECAS;
}
}