Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
Статус
В этой теме нельзя размещать новые ответы.

2001union2001

Дебютант
Проблема: Когда я выдаю админку игроку , ему дается новый сгенерированный админ.пароль. Если игрок перезайдет - пароль слетает, а в mysql [accounts -> pDostup] так и стоит 0 вместо "того нужного" админ.пароля :bc: .

Скриншот структуры [pDostup]: (Не реклама :au: ).

[Команда выдачи админки]:

PHP:
CMD:editadm(playerid,params[])
{
        if(PlayerInfo[playerid][pAdmin] != 12) return true;
        if(!IsPlayerConnected(playerid)) return true;
        if(sscanf(params,"dd",params[0],params[1])) return SendClientMessage(playerid, COLOR_WHITE, "{FFA200}[Подсказка]: {FFFFFF} /editadm [id] [уровень]");
        if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Игрок не найден.");
        if(params[1] > 12 || params[1] < 0) return SendClientMessage(playerid,COLOR_WHITE,"Ошибка: Нельзя меньше 1 и больше 12");
        if(params[1] == 0)
        {
                PlayerInfo[params[0]][pAdmin] = 0;
                PlayerInfo[params[0]][pDostup] = 0;
                dostup[params[0]] = 0;
                SendMes(params[0], COLOR_WHITE, "{6495ED}Администратор %s аннулировал Вам полномочия администратора!",PlayerInfo[playerid][pName]);
                SendMes(playerid, COLOR_WHITE, "{6495ED}Аннулирование прав администратора у игрока %s прошло успешно.", PlayerInfo[params[0]][pName]);
                OnPlayerUpdateRL(playerid);
                return true;
        }
        PlayerInfo[params[0]][pAdmin] = params[1];
        if(PlayerInfo[params[0]][pAdmin] != 0)
        OnPlayerUpdateRL(playerid);
        {
if(PlayerInfo[params[0]][pDostup] == 0 || PlayerInfo[params[0]][pDostup] == 2038) PlayerInfo[params[0]][pDostup] = 1000+random(8999);
        }
        if(PlayerInfo[params[0]][pAdmin] != 0)
		{
     		if(PlayerInfo[params[0]][pDostup] == 0 || PlayerInfo[params[0]][pDostup] == 2038)
     		{
          		PlayerInfo[params[0]][pDostup] = 1000+random(8999);
          		OnPlayerUpdateRL(playerid);
     		}
		}
        else PlayerInfo[params[0]][pDostup] = 0;
        format(stringer1, sizeof(stringer1), "%s назначил(а) Вас администраторам %d ранга. Ваш админ-пароль: %d", PlayerInfo[playerid][pName], params[1],PlayerInfo[params[0]][pDostup]);
        SendClientMessage(params[0], COLOR_ORANGE, "Вас назначили на административные права, чтобы узнать команды введите: /ahelp");
        SendClientMessage(params[0], COLOR_ORANGE,stringer1);
        format(stringer1, sizeof(stringer1), "Вы назначили %s администратором %d ранга", PlayerInfo[params[0]][pName], params[1]);
        SendClientMessage(playerid, COLOR_ORANGE,stringer1);
        OnPlayerUpdateRL(playerid);
        return true;
}
[stock SaveAccounts()]:

PHP:
stock SaveAccounts()
{
	PlayerForeach(i) { if(IsPlayerConnected(i)) OnPlayerUpdateRL(i); }
}
[stock OnPlayerUpdateRL(playerid)]:

PHP:
stock OnPlayerUpdateRL(playerid)
{
	if(gPlayerLogged[playerid] == 1 && IsPlayerConnected(playerid))
	{
		if(saveplayer[playerid] != 0) return true;
		saveplayer[playerid] = 5;
		new sendername[24];
		GetPlayerName(playerid,sendername,24);
		new str[2048];
		format(str,sizeof(str),"UPDATE `"TABLE_ACCOUNT"` SET `pLevel` = '%d',`pPhousekey` = '%d',`pPbiskey` = '%d',`pPsbiskey` = '%d',`pAdmin` = '%d',`pFuelcar` = '%f',`pHeadValue` = '%d',`pContract` = '%d',`pCar` = '%d',`pHelper` = '%d', ",
		PlayerInfo[playerid][pLevel],
		PlayerInfo[playerid][pPhousekey],PlayerInfo[playerid][pPbiskey],
		PlayerInfo[playerid][pPsbiskey],PlayerInfo[playerid][pAdmin],
		PlayerInfo[playerid][pFuelcar],
		PlayerInfo[playerid][pHeadValue],PlayerInfo[playerid][pContract],
		PlayerInfo[playerid][pCar], PlayerInfo[playerid][pHelper]);

		format(str,sizeof(str),"%s `pDonatemoney2` = '%d', `pDonateAdd` = '%d', `pPodarok` = '%d', `pDonateRank` = '%d',`pDonateRankTime` = '%d',`pReg` = '%d',`pSex` = '%d',`pMuted` = '%d',`pExp` = '%d',`pCash` = '%d',`pJailed` = '%d',`pJailTime` = '%d',`pMats` = '%d',`pDrugs` = '%d',`pLeader` = '%d',`pMember` = '%d', ",str,
		PlayerInfo[playerid][pDonatemoney2],PlayerInfo[playerid][pDonateAdd], PlayerInfo[playerid][pPodarok],
		PlayerInfo[playerid][pDonateRank],PlayerInfo[playerid][pDonateRankTime],
		PlayerInfo[playerid][pReg],PlayerInfo[playerid][pSex],
		PlayerInfo[playerid][pMuted],PlayerInfo[playerid][pExp],
		PlayerInfo[playerid][pCash],
		PlayerInfo[playerid][pJailed],PlayerInfo[playerid][pJailTime],
		PlayerInfo[playerid][pMats],PlayerInfo[playerid][pDrugs],
		PlayerInfo[playerid][pLeader],PlayerInfo[playerid][pMember]);

		format(str,sizeof(str),"%s `pRank` = '%d',`pJob` = '%d',`pVodPrava` = '%d',`pBizLic` = '%d',`pFlyLic` = '%d',`pBoatLic` = '%d',`pFishLic` = '%d',`pGunLic` = '%d', ",str,
		PlayerInfo[playerid][pRank],PlayerInfo[playerid][pJob],
		PlayerInfo[playerid][pVodPrava],PlayerInfo[playerid][pBizLic],
		PlayerInfo[playerid][pFlyLic],PlayerInfo[playerid][pBoatLic],
		PlayerInfo[playerid][pFishLic],PlayerInfo[playerid][pGunLic]);

		format(str,sizeof(str),"%s `pSDPistol` = '%d',`pDesertEagle` = '%d',`pShotGun` = '%d',`pMP5` = '%d',`pAK47` = '%d',`pM4` = '%d',`pChar` = '%d',`pModel` = '%d', `pBankPass` = '%d', `pBankKart` = '%d', ",str,
		PlayerInfo[playerid][pSDPistol],
		PlayerInfo[playerid][pDesertEagle],PlayerInfo[playerid][pShotGun],
		PlayerInfo[playerid][pMP5],PlayerInfo[playerid][pAK47],
		PlayerInfo[playerid][pM4],PlayerInfo[playerid][pChar],
		PlayerInfo[playerid][pModel], PlayerInfo[playerid][pBankPass], PlayerInfo[playerid][pBankKart]);

		format(str,sizeof(str),"%s `pPnumber` = '%d',`pPayDayHad` = '%d',`pWarns` = '%d',`punWarns` = '%d',`punWarnstime` = '%d',`pFuel` = '%d',`pRobTime` = '%d',`pExitTied` = '%d',`pExitTiedNomer` = '%d',`pGrabSkill` = '%d',`pGrabTime` = '%d',`pReportTime` = '%d',`pVerevka` = '%d',`pOtmbI4ka` = '%d',`pAutoTime` = '%d', ",str,
		PlayerInfo[playerid][pPnumber],PlayerInfo[playerid][pPayDayHad],
		PlayerInfo[playerid][pWarns],PlayerInfo[playerid][punWarns],
		PlayerInfo[playerid][punWarnstime],PlayerInfo[playerid][pFuel],
		PlayerInfo[playerid][pRobTime],PlayerInfo[playerid][pExitTied],
		PlayerInfo[playerid][pExitTiedNomer],PlayerInfo[playerid][pGrabSkill],
		PlayerInfo[playerid][pGrabTime],PlayerInfo[playerid][pReportTime],
		PlayerInfo[playerid][pVerevka],
		PlayerInfo[playerid][pOtmbI4ka],PlayerInfo[playerid][pAutoTime]);

		format(str,sizeof(str),"%s `pAutoSkill` = '%d',`pMarried` = '%d',`pMuteTime` = '%d',`pMobile` = '%d',`pBank` = '%d',`pLocked2` = '%d',`pBoxSkill` = '%d',`pKongfuSkill` = '%d',`pKickboxSkill` = '%d',`pFightSkill` = '%d',`pFightSkil` = '%d',`pFightTime` = '%d',`pHospital` = '%d' = '%d',`pDostup` = '%d',`pZakonp` = '%d', ",str,
		PlayerInfo[playerid][pAutoSkill],PlayerInfo[playerid][pMarried],
		PlayerInfo[playerid][pMuteTime],PlayerInfo[playerid][pMobile],
		PlayerInfo[playerid][pBank],PlayerInfo[playerid][pLocked2],
		PlayerInfo[playerid][pBoxSkill],PlayerInfo[playerid][pKongfuSkill],
		PlayerInfo[playerid][pKickboxSkill],PlayerInfo[playerid][pFightSkill],
		PlayerInfo[playerid][pFightSkil],PlayerInfo[playerid][pFightTime],
		PlayerInfo[playerid][pDostup],PlayerInfo[playerid][pZakonp]);

		format(str,sizeof(str),"%s `pBanTime1` = '%d',`pBanData1` = '%d',`pVipTime` = '%d',`pHouse` = '%d',`pVipData` = '%d',`pBanKol` = '%d',`pNarcoLomka` = '%d',`pProz` = '%d',`pKolesocar` = '%d',`pPokraska` = '%d',`pSpoiler` = '%d',`pHood` = '%d',`pExhaust` = '%d',`pLamps` = '%d',`pSideskirt` = '%d',`pVozdyx` = '%d',`pVcol1` = '%d',`pVcol2` = '%d',`pBamper1` = '%d',`pBamper2` = '%d', ",str,
		PlayerInfo[playerid][pBanTime1],PlayerInfo[playerid][pBanData1],
		PlayerInfo[playerid][pVipTime],PlayerInfo[playerid][pHouse],
		PlayerInfo[playerid][pVipData],PlayerInfo[playerid][pBanKol],
		PlayerInfo[playerid][pNarcoLomka],PlayerInfo[playerid][pProz],
		PlayerInfo[playerid][pKolesocar],PlayerInfo[playerid][pPokraska],
		PlayerInfo[playerid][pSpoiler],PlayerInfo[playerid][pHood],
		PlayerInfo[playerid][pExhaust],PlayerInfo[playerid][pLamps],
		PlayerInfo[playerid][pSideskirt],PlayerInfo[playerid][pVozdyx],
		PlayerInfo[playerid][pVcol1],PlayerInfo[playerid][pVcol2],
		PlayerInfo[playerid][pBamper1],PlayerInfo[playerid][pBamper2]);

		format(str,sizeof(str),"%s `pNitro` = '%d',`pGidra` = '%d',`pMestoJail` = '%d',`pWanted` = '%d',`pHousecash` = '%d',`pTut` = '%d',`pNumbercar` = '%s',`pIpReg` = '%s' WHERE `Name` = '%s'",str,
		PlayerInfo[playerid][pNitro],PlayerInfo[playerid][pGidra],PlayerInfo[playerid][pMestoJail],
		PlayerInfo[playerid][pWanted],PlayerInfo[playerid][pHousecash],
		PlayerInfo[playerid][pTut],PlayerInfo[playerid][pNumbercar],
		PlayerInfo[playerid][pIpReg],sendername);
		mysql_function_query(dbHandle, str, false, "", "");
		printf("Аккаунт %s был успешно сохранен.(%d)",sendername,strlen(str));
	}
	else printf("[ERROR] Ошибка сохранения.");
	return 1;
}
[stock OnPlayerLogin(playerid, password[])]:

PHP:
stock OnPlayerLogin(playerid, password[])
{
	new sendername[24];
	GetPlayerName(playerid,sendername,24);
	mysql_format(dbHandle,QUERY,sizeof(QUERY),"SELECT * FROM `"TABLE_ACCOUNT"` WHERE `Name` = '%s' AND `pKey` = '%e'", sendername, password);
	mysql_function_query(dbHandle, QUERY, true, "LoginCallback","ds", playerid, password);
	return true;
}
[public OnPlayerDisconnect(playerid, reason)]:

PHP:
public OnPlayerDisconnect(playerid, reason)
{
	if(GetPVarInt(playerid, "Kick") != 0) KillTimer(GetPVarInt(playerid, "Kick"));
	for (new cmdid; cmdid < MAX_CMDS; cmdid++) if(AntiFlood[playerid][cmdid] > 0) AntiFlood[playerid][cmdid] = 0;
	if(activemusic[playerid] == true)
	{
		activemusic[playerid] = false;
		StopAudioStreamForPlayer(playerid);
	}
	KillTimer(RTimer[playerid]);
	if(tChainSaw[playerid] != -1) KillTimer(tChainSaw[playerid]), tChainSaw[playerid] = -1;
	PlayerTextDrawDestroy(playerid,CarSpeed[playerid]);
	PlayerTextDrawDestroy(playerid,CarFuel[playerid]);
	PlayerTextDrawDestroy(playerid,CarMilliage[playerid]);
	PlayerTextDrawDestroy(playerid,CarLights[playerid]);
	PlayerTextDrawDestroy(playerid,CarEngine[playerid]);
	TextDrawHideForPlayer(playerid, SBox);
	Delete3DTextLabel(AdminText3D[playerid]);
	IsConnected{playerid} = 0;
	if(TeamPain[playerid] == 1) BluePlayer--;
	if(TeamPain[playerid] == 2) RedPlayer--;
	TeamPain[playerid] = 0;
	KillPain[playerid] = 0;
	DeathPain[playerid] = 0;
	if(IsACop(playerid)) zakonn --;
	if(PlantObject[playerid] != -1)
	{
		DestroyObject(PlantObject[playerid]);
		PlantObject[playerid] = -1;
	}
	if(ContractInfo[playerid][cHitman] != INVALID_PLAYER_ID)
	{
		if(IsPlayerConnected(ContractInfo[playerid][cHitman]))
		{
			SendMes(ContractInfo[playerid][cHitman],COLOR_YELLOW,"~~~ Жертва %s[%d] вышла из игры ~~~", PlayerInfo[playerid][pName],playerid);
			ContractInfo[ContractInfo[playerid][cHitman]][cZakaz] = INVALID_PLAYER_ID;
		}
	}
	if(PlayerInfo[playerid][pAdmin] > 0)
	{
		format(stringer1, sizeof(stringer1), "[A] вышел %s [lvl: %d]",PlayerInfo[playerid][pName],PlayerInfo[playerid][pAdmin]);
		Delete3DTextLabel(AdminText3D[playerid]);
		ABroadCast(0xF4B800AA,stringer1,1);
	}
	mysql_format(dbHandle, QUERY, sizeof(QUERY), "UPDATE `"TABLE_ACCOUNT"` SET `pOnline` = '1001' WHERE `Name` = '%s'",PlayerInfo[playerid][pName]);
	mysql_function_query(dbHandle, QUERY, false, "", "");
	ResetCarInfo(playerid);
	if(PlayerCuffed[playerid] > 0 && PlayerInfo[playerid][pWanted] > 0 || Tazer[playerid] > 0 && PlayerInfo[playerid][pWanted] > 0)
	{
		PlayerInfo[playerid][pJailTime] = PlayerInfo[playerid][pWanted]*600;
		PlayerInfo[playerid][pJailed] = 1;
		PlayerInfo[playerid][pCash] -= 1000000;
		PlayerInfo[playerid][pMestoJail] = 2;
	}
	if(GetPVarInt(playerid,"GzOn") == 1)
	{
		SetPVarInt(playerid,"GzOn",0);
		PlayerTextDrawDestroy(playerid, BandaCapt1a[playerid]);
		PlayerTextDrawDestroy(playerid, BandaCapt2a[playerid]);
		PlayerTextDrawDestroy(playerid, ScoreCapt1a[playerid]);
		PlayerTextDrawDestroy(playerid, ScoreCapt2a[playerid]);
		PlayerTextDrawDestroy(playerid, ScoreCaptTire[playerid]);
		PlayerTextDrawDestroy(playerid, CaptTime[playerid]);
		PlayerTextDrawDestroy(playerid, ScoreCapt[playerid]);
		PlayerTextDrawDestroy(playerid, Textdraw4[playerid]);
	}
	if(RB[playerid] != 255)
	{
		DestroyDynamicObject(BlockPost[RB[playerid]]);
		DestroyDynamic3DTextLabel(Block3D[RB[playerid]]);
		RB[playerid] = 255;
		rbtime[playerid] = 0;
	}
	if(PlayerTied[playerid] > 0)
	{
		format(stringer1, sizeof(stringer1), " %s вышел из игры при похищении, данный игрок будет наказан.", PlayerInfo[playerid][pName]);
		SendClientMessageToAll(COLOR_LIGHTRED, stringer1);
		PlayerInfo[playerid][pExitTied]++;
		PlayerInfo[playerid][pExitTiedNomer] = 1;
	}
	CancelSelectTextDraw(playerid);
	if(boy[playerid] == 1)
	{
		ring = 0;
		boy[playerid] = 0;
		boy[fightid[playerid]] = 0;
		TimeBox[playerid] = 0;
		TimeBoxAll[playerid] = 0;
		TimeBox[fightid[playerid]] = 0;
		TimeBoxAll[fightid[playerid]] = 0;
		SetPlayerPos(fightid[playerid],770.7488,6.9432,1000.7118);
		SetPlayerFacingAngle(fightid[playerid], 90.0);
		switch(PlayerInfo[fightid[playerid]][pFightSkil])
		{
		case 0..49: PlayerInfo[fightid[playerid]][pFightSkil]++, PlayerInfo[fightid[playerid]][pFightTime]= 600;
		case 50: PlayerInfo[fightid[playerid]][pFightSkill]++, PlayerInfo[fightid[playerid]][pFightTime]= 600;
		case 51..99: PlayerInfo[fightid[playerid]][pFightSkil]++, PlayerInfo[fightid[playerid]][pFightTime]= 540;
		case 100: PlayerInfo[fightid[playerid]][pFightSkill]++, PlayerInfo[fightid[playerid]][pFightTime]= 540;
		case 101..149: PlayerInfo[fightid[playerid]][pFightSkil]++, PlayerInfo[fightid[playerid]][pFightTime]= 480;
		case 150: PlayerInfo[fightid[playerid]][pFightSkill]++, PlayerInfo[fightid[playerid]][pFightTime]= 480;
		case 151..199: PlayerInfo[fightid[playerid]][pFightSkil]++, PlayerInfo[fightid[playerid]][pFightTime]= 420;
		case 200: PlayerInfo[fightid[playerid]][pFightSkill]++, PlayerInfo[fightid[playerid]][pFightTime]= 420;
		}
		SendMes(fightid[playerid],COLOR_LIGHTRED," Ваш противник вышел из игры на ринге. Время до след. боя: %d секунд", PlayerInfo[fightid[playerid]][pFightTime]);
		PlayerInfo[playerid][pFightTime] = 600;
		fightid[playerid] = INVALID_PLAYER_ID;
		fightid[fightid[playerid]] = INVALID_PLAYER_ID;
		TogglePlayerControllable(fightid[playerid], 0);
	}
	PlayerForeach(i)
	{
		if(GetPlayerState(i) == PLAYER_STATE_SPECTATING && gSpectateID[i] == playerid)
		{
			StopSpectate(i);
			SetPlayerHealth(i, 100);
			GameTextForPlayer(i,"~w~RECON ~r~ OFF~n~ ~r~PLAYER DISCONNECT", 5000, 3);
		}
	}
	if(PlayerInfo[playerid][pJob] == 2)
	{
		if(gcontract[playerid] == 1)
		{
			Delete3DTextLabel(Meh3d[GetPlayerVehicleID(playerid)]);
			gcontract[playerid] = 0;
		}
	}
	if(PlayerInfo[playerid][pPhousekey] !=255)
	{
		PlayerInfo[playerid][pProz] = PlayerInfo[playerid][pProz];
		if(caridhouse[playerid] != 0)
		{
			DestroyVehicle(caridhouse[playerid]);
			caridhouse[playerid] = 0;
		}
	}
	new playersip[16];
	new year, month,day;
	zips[playerid] = 0;
	getdate(year, month, day);
	new hour, minute, second;
	gettime(hour, minute, second);
	GetPlayerIp(playerid,playersip,sizeof(playersip));
	if(IsPlayerAttachedObjectSlotUsed(playerid,1)) RemovePlayerAttachedObject(playerid,1);
	if(SelectChar[playerid] == INVALID_PLAYER_ID)
	{
		SetPlayerSkin(playerid, OldSkin[playerid]);
		PlayerInfo[playerid][pChar] = OldSkin[playerid];
		SelectChar[playerid] = 0;
	}
	OnPlayerUpdateRL(playerid);
	tune[playerid] = 0;
	soglasen[playerid] = 0;
	SelectCharPlace[playerid] = 0;
	CharPrice[playerid] = 0;
	SelectCharID[playerid] = 0;
	SelectChar[playerid] = 0;
	PicCP[playerid] = 0;
	takephone[playerid] = 0;
	gag[playerid] = 0;
	dostup[playerid] = 0;
	PicCP[playerid] = 0;
	enterbiz[playerid] = 0;
	PlayerInfo[playerid][pDrugtime] = 0;
	PlayerInfo[playerid][pGunfbiTime] = 0;
	forma[playerid] = 0;
	proverkaforma[playerid] = 0;
	keys[playerid] = 0;
	SetPlayerSkills(playerid);
	SelectCharPlace[playerid] = 0;
	CharPrice[playerid] = 0;
	SelectCharID[playerid] = 0;
	SelectChar[playerid] = 0;
	if(TransportDuty[playerid] == 1) TaxiDrivers -= 1;
	if(PlayerInfo[playerid][pMember] == 4) Medics -= 1;
	if(PlayerInfo[playerid][pMember] == 1 || PlayerInfo[playerid][pMember] == 10 || PlayerInfo[playerid][pMember] == 21 ) Police +=1;
	else if(PlayerInfo[playerid][pJob] == 2) Mechanics -= 1;
	if(TransportCost[playerid] > 0 && TransportDriver[playerid] != INVALID_PLAYER_ID)
	{
		if(IsPlayerConnected(TransportDriver[playerid]))
		{
			TransportMoney[TransportDriver[playerid]] += TransportCost[playerid];
			TransportTime[TransportDriver[playerid]] = 0;
			TransportCost[TransportDriver[playerid]] = 0;
			format(stringer1, sizeof(stringer1), "~g~+%d",TransportCost[playerid]);
			GameTextForPlayer(TransportDriver[playerid], stringer1, 5000, 1);
		}
	}
	return true;
}
Примечание:
1. Вместо OnPlayerUpdateRL(playerid); пробовал впиливать SaveAccount(): но толку не было.
2. Лог mysql чистый и лог сервера тоже.
3. Мне писали что переменная игрока объявлена как integer, а надо string, а т.е. сделать из нее массив. Но я гусь в павно :ao:
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу