Перейти к содержимому


Фотография

Пара вопросов по написанию

sourcepawn

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 maloi9208

maloi9208

    Пользователь

  • Пользователь
  • PipPipPip
  • 274 сообщений

Отправлено 12 Август 2016 - 12:45

Добрый день. подскажите, пожалуйста, как написать пару вещей, а то совсем дуб в написании, да еще и на новом синтаксисе.

 

нужно создать пустой список, в который будут добавляться строки, пример

list = []

затем в имеющихся функциях делать проверку, есть ли в списке определенная строка, и если ее нет, то добавлять, пример

    if not "qwerty" in list1: list1.append('qwerty')

затем как вывести все строки в списке через запятую, и как очистить список?

написал в стиле питона, по-другому не умею)


Сообщение отредактировал maloi9208: 12 Август 2016 - 13:04


#2 MixJay

MixJay

    Пользователь

  • Пользователь
  • PipPipPip
  • 222 сообщений

Отправлено 14 Август 2016 - 10:27



Добрый день. подскажите, пожалуйста, как написать пару вещей, а то совсем дуб в написании, да еще и на новом синтаксисе.

 

нужно создать пустой список, в который будут добавляться строки, пример

list = []

затем в имеющихся функциях делать проверку, есть ли в списке определенная строка, и если ее нет, то добавлять, пример

    if not "qwerty" in list1: list1.append('qwerty')

затем как вывести все строки в списке через запятую, и как очистить список?

написал в стиле питона, по-другому не умею)

 

 

Пара примеров...

 

Скрытый текст


#3 maloi9208

maloi9208

    Пользователь

  • Пользователь
  • PipPipPip
  • 274 сообщений

Отправлено 18 Август 2016 - 10:12

огромнейшее спасибо!

я так понял, GetClientName(i, sName[i], sizeof(sName)-1); добавляет в список ник игрока? а как строку добавить?

с индексом замучался, не могу узнать кол-во записей и поставить индекс, который на 1 больше записей



#4 maloi9208

maloi9208

    Пользователь

  • Пользователь
  • PipPipPip
  • 274 сообщений

Отправлено 17 Июль 2017 - 16:33

подскажите, пожалуйста, еще одну вещь

как узнать, открыта ли дверь в убежище (в конце карты)?

что бы получилось что-то вроде

    if (saferoom_door == 1)
    {
        pass
        pass
    }


#5 Figa

Figa

    Участник

  • Пользователь
  • PipPip
  • 63 сообщений

Отправлено 17 Июль 2017 - 18:57

как узнать, открыта ли дверь в убежище (в конце карты)?

HookSingleEntityOutput(entity_door, "OnOpen", OnOpen_Func, true);
//entity_door - id двери; OnOpen - событие, в данном случае открытие; OnOpen_Func - при открытии двери выполняем нужную ф-ю; true - отлавливать 1 раз, если нет, то false.


//Зная id ты можешь сам открывать/закрывать/блокировать и т.п. дверь 
AcceptEntityInput(entity_door, "Close");

https://developer.va...ting_checkpoint
http://www.sourcemod...gleEntityOutput

http://www.sourcemod...ceptEntityInput


  • maloi9208 это нравится

#6 maloi9208

maloi9208

    Пользователь

  • Пользователь
  • PipPipPip
  • 274 сообщений

Отправлено 17 Июль 2017 - 19:06

HookSingleEntityOutput(entity_door, "OnOpen", OnOpen_Func, true);
//entity_door - id двери; OnOpen - событие, в данном случае открытие; OnOpen_Func - при открытии двери выполняем нужную ф-ю; true - отлавливать 1 раз, если нет, то false.


//Зная id ты можешь сам открывать/закрывать/блокировать и т.п. дверь 
AcceptEntityInput(entity_door, "Close");

https://developer.va...ting_checkpoint
http://www.sourcemod...gleEntityOutput

http://www.sourcemod...ceptEntityInput

 

большое спасибо

я правильно понимаю, что мне еще нужно знать id двери?

что-то нашел в плагинах, но не пойму, то ли это и как использовать

 

CoopDoorAntiClose

public OnEntityCreated(entity, const String:classname[])
{
    if(StrEqual(classname, "prop_door_rotating_checkpoint"))
    {        
        if(GetEntProp(entity, Prop_Send, "m_eDoorState") == 0)
        {
            HookSingleEntityOutput(entity, "OnFullyOpen", OnStartSFDoorFullyOpened, true);
        }
    }
}

public OnStartSFDoorFullyOpened(const String:output[], caller, activator, Float:delay)
{
    AcceptEntityInput(caller, "Lock");
}

 

 

и Trap Of Door Lock

    if(CheckDoor(entity)){
        new status = GetEntProp(entity, Prop_Data, "m_eDoorState");
        new flags = ((!flagDoorGoal || countDown <= 0) && CheckDoorLock(entity));
        if(IsALLinSafeRoom()){
            if(status == 2 && flags && GetEntProp(entity, Prop_Data, "m_bLocked")){
                SetEntProp(entity, Prop_Data, "m_hasUnlockSequence", 0);
                AcceptEntityInput(entity, "Unlock");
                AcceptEntityInput(entity, "forceclosed");
                AcceptEntityInput(entity, "Close");
            }
        }
        else if(!status && flags){
            SetEntProp(entity, Prop_Data, "m_hasUnlockSequence", 0);
            AcceptEntityInput(entity, "Unlock");
            AcceptEntityInput(entity, "forceclosed");
            AcceptEntityInput(entity, "Open");
        }
        else if((status&3)%3 && !GetEntProp(entity, Prop_Data, "m_bLocked")){
            // anti-doorspam
            if(GetConVarBool(hDoorLockSpam)){
                DoorLockFlag(entity);
                AcceptEntityInput(entity, "forceclosed");
                AcceptEntityInput(entity, "Lock");
                SetEntProp(entity, Prop_Data, "m_hasUnlockSequence", 1);
            }
        }
        else if(status == 2 && GetEntProp(entity, Prop_Data, "m_bLocked")){
            decl String:username[MAX_NAME_LENGTH];
            new client = GetClientOfUserId(GetEventInt(event, "userid"));
            new max = GetMaxClients();
            new count = 0;
            for(new i=1; i<=max; i++){
                if(!isSafeRoom[i]
                  && IsClientConnected(i)
                  && IsClientInGame(i)
                  && IsPlayerAlive(i)
                  && !IsFakeClient(i)
                  && GetClientTeam(i) == 2
                  &&  (!GetConVarBool(hDoorLockDown)
                  || !GetEntProp(i, Prop_Send, "m_isIncapacitated"))){




Темы с аналогичным тегами sourcepawn

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных